论坛首页 招聘求职论坛

关于sessionFactory中openSession的一些疑问

浏览 3675 次
精华帖 (1) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-20  
  我们都知道sessionFactory中有这样的2个方法openSession(),openCurrentSession().前者是打开一个session,而后者是判断,当前线程如果有session,那么返回这个session,如果没有则新打开一个session.
   假如我们的业务需要同时update(),save()那么2种打开session的方法会有区别。
   1:一个线程打开了2个session
   2:一个线程只打开1个session
   从节省资源上来讲,2更可取。
    现在假如我们的业务采用事务管理,而且update(),save()在一个事务中,当update()运行通过,save()运行失败后。
    1:session1().close()成功,session2()失败  session2回滚  事务回滚 
    2:session()失败  session回滚  事务回滚
那么第一种方法的session1()已经关闭了,是否可能回滚session1()
   发表时间:2009-04-20  
这个问题可以用spring的事务管理解决
0 请登录后投票
   发表时间:2009-04-20  
taupo 写道
这个问题可以用spring的事务管理解决



恩,可以解决,但是为什么要出现openSession和openCurrentSession这2种方法呢

我现在只觉得在资源节省上来说openCurrentSession跟好一点,而且他只有一个session在回滚的时候,也比较容易理解

那我们什么时候需要使用openSession而不应该用openCurrentSession,或则说在什么情况下openSession的优势大于openCurrentSession呢,这个优势是什么
0 请登录后投票
   发表时间:2009-04-20  
关注...
0 请登录后投票
   发表时间:2009-04-20  
shenglongq 写道
taupo 写道
这个问题可以用spring的事务管理解决



恩,可以解决,但是为什么要出现openSession和openCurrentSession这2种方法呢

我现在只觉得在资源节省上来说openCurrentSession跟好一点,而且他只有一个session在回滚的时候,也比较容易理解

那我们什么时候需要使用openSession而不应该用openCurrentSession,或则说在什么情况下openSession的优势大于openCurrentSession呢,这个优势是什么


openCurrentSession的使用是有条件限制的,必须在事务存在的情况下(好像记得是这样的)。。。

openSession你想啥时候用都可以,只要你不怕浪费资源


一般来说我们都会把session绑定到当前线程上,而openCurrentSession就是去当前线程里取,所以在利用openCurrentSession之前,肯定调用了一次openSession

其实我没太搞明白你要问什么
0 请登录后投票
   发表时间:2009-04-21  
shenglongq 写道
taupo 写道
这个问题可以用spring的事务管理解决



恩,可以解决,但是为什么要出现openSession和openCurrentSession这2种方法呢

我现在只觉得在资源节省上来说openCurrentSession跟好一点,而且他只有一个session在回滚的时候,也比较容易理解

那我们什么时候需要使用openSession而不应该用openCurrentSession,或则说在什么情况下openSession的优势大于openCurrentSession呢,这个优势是什么


这和优势无关,这个是需求相关,有时候你需要同时进行2个并发的无关事务的时候,你就需要2个独立的session。
比如,你要写log。
0 请登录后投票
   发表时间:2009-04-21  
chinata 写道
shenglongq 写道
taupo 写道
这个问题可以用spring的事务管理解决



恩,可以解决,但是为什么要出现openSession和openCurrentSession这2种方法呢

我现在只觉得在资源节省上来说openCurrentSession跟好一点,而且他只有一个session在回滚的时候,也比较容易理解

那我们什么时候需要使用openSession而不应该用openCurrentSession,或则说在什么情况下openSession的优势大于openCurrentSession呢,这个优势是什么


这和优势无关,这个是需求相关,有时候你需要同时进行2个并发的无关事务的时候,你就需要2个独立的session。
比如,你要写log。



恩,差不多就是,当我们有这样的需要update(),save()  2个操作,即使update()成功,save()失败,我们也只希望save()回滚而不希望已经成功的update()回滚,如果有这样的业务需求的时候,我们就需要开2个session,

谢谢,上面2位达人的解答!
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics