Hibernate里的 getCurrentSession取的当前session是由谁管理的?是Spring吗?
现在问题是先用HQL查询出了持久化对象,再修改了这个对象然后由于hibernate关系自动给这些持久化对象更新。问题是如果中间再有一个HQL查询也是用了getCurren...
现在问题是 先用HQL查询出了持久化对象,再修改了这个对象 然后由于hibernate关系 自动给这些持久化对象更新。问题是如果中间再有一个HQL查询 也是用了 getCurrentSession 那save方法后session会关闭吗?那第一个用HQL查的对象 还能自动更新吗?
如;
List<RecoverTCSharedStock> list = this.getRecoverTCSharedStockDAO().getSaleOrderDetail();//这里查粗来的对象是持久化的对象
deliverGVS(list); 这个方法里 给每个持久化对象 set新值
这样最后没问题 能自动对这些更改的持久化对象更新
问题是:
List<RecoverTCSharedStock> list = this.getRecoverTCSharedStockDAO().getSaleOrderDetail();
加了: 新表的查询 但dao层用的还是getCurrentSession
List<RecoverTCSharedStock2> list2 = this.getRecoverTCSharedStockDAO().getSaleOrderDetail();
然后进行了 save(list2)操作 就是往list2里插入了新对象 ,
问题来了。。。这里会不会关闭了之前的第一个session??
执行完上面的save session还存在吗?我看网上说持久化对象都是跟session关联的,那这个session是什么结果呢?
deliverGVS(list);
补充问题:我这里用HQL查出了持久化对象 并给这些对象set了几个属性。然后没有对其进行update()方法的操作,因为持久化对象不用update 也会自动更新。但前提是这个getCurrentSession没有被关闭。我现在担心的是这个session会不会因为中途的save或者update操作给关闭了 那我这个本来持久化的对象 不能自动更新。。。
进一步的研究: 事务是执行完前缀名字方法名的 就提交,但问题又出来了,如果2个事务都会被一个session管理 那如我上面问的题一样 方法体中的一个事务提交 会不会导致 session的关闭?如果不是 那又是因为什么原因 又再哪个配置文件里呢? 展开
如;
List<RecoverTCSharedStock> list = this.getRecoverTCSharedStockDAO().getSaleOrderDetail();//这里查粗来的对象是持久化的对象
deliverGVS(list); 这个方法里 给每个持久化对象 set新值
这样最后没问题 能自动对这些更改的持久化对象更新
问题是:
List<RecoverTCSharedStock> list = this.getRecoverTCSharedStockDAO().getSaleOrderDetail();
加了: 新表的查询 但dao层用的还是getCurrentSession
List<RecoverTCSharedStock2> list2 = this.getRecoverTCSharedStockDAO().getSaleOrderDetail();
然后进行了 save(list2)操作 就是往list2里插入了新对象 ,
问题来了。。。这里会不会关闭了之前的第一个session??
执行完上面的save session还存在吗?我看网上说持久化对象都是跟session关联的,那这个session是什么结果呢?
deliverGVS(list);
补充问题:我这里用HQL查出了持久化对象 并给这些对象set了几个属性。然后没有对其进行update()方法的操作,因为持久化对象不用update 也会自动更新。但前提是这个getCurrentSession没有被关闭。我现在担心的是这个session会不会因为中途的save或者update操作给关闭了 那我这个本来持久化的对象 不能自动更新。。。
进一步的研究: 事务是执行完前缀名字方法名的 就提交,但问题又出来了,如果2个事务都会被一个session管理 那如我上面问的题一样 方法体中的一个事务提交 会不会导致 session的关闭?如果不是 那又是因为什么原因 又再哪个配置文件里呢? 展开
展开全部
不是,是由hibernate的SessionFactory去管理的。底层的原理你得去看源码了。
更多追问追答
追问
session是SessionFactory管理 但封装的原理都是一样的吧 那也肯定是每次事务提交后 自动关闭session,我找到了管理事务的配置文件 事务是执行完前缀名字方法名的 就提交,但问题又出来了,如果2个事务都会被一个session管理 那如我上面问的题一样 方法体中的一个事务提交 会不会导致 session的关闭?如果不是 那又是因为什么原因 又再哪个配置文件里呢
追答
1。一个session就管理一个事务的。不能同时搞2个事务。
2.session关闭前事务必须提交,如果2个事务没有提交,session是不能关闭的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的意思是用JDBC 连接数据库 做2次添加 中途会不会在第一次添加后关闭连接导致最后一个添加不成功?
更多追问追答
追问
补充问题了
追答
这个你放心不会的 。但是我建议你这样做 , JDBC连接数据库单独写一个方法,然后在你更新添加查询的方法里调用,这样就OK了 。 如果你不懂怎么做 我可以把我的代码贴出来,你参考这粘贴复制改改就OK
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
描述的不够清楚,不清楚你的事务边界,贴出代码看看
更多追问追答
追问
事务边界从哪个配置文件看?
追答
看来你的事务管理是默认设置,如果是默认设置,
如果你的transaction没有commit,session应该不会关闭。
你试一下不就OK了?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询