浏览 3675 次
精华帖 (1) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-20
假如我们的业务需要同时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() 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-20
这个问题可以用spring的事务管理解决
|
|
返回顶楼 | |
发表时间:2009-04-20
taupo 写道 这个问题可以用spring的事务管理解决
恩,可以解决,但是为什么要出现openSession和openCurrentSession这2种方法呢 我现在只觉得在资源节省上来说openCurrentSession跟好一点,而且他只有一个session在回滚的时候,也比较容易理解 那我们什么时候需要使用openSession而不应该用openCurrentSession,或则说在什么情况下openSession的优势大于openCurrentSession呢,这个优势是什么 |
|
返回顶楼 | |
发表时间:2009-04-20
关注...
|
|
返回顶楼 | |
发表时间:2009-04-20
shenglongq 写道 taupo 写道 这个问题可以用spring的事务管理解决
恩,可以解决,但是为什么要出现openSession和openCurrentSession这2种方法呢 我现在只觉得在资源节省上来说openCurrentSession跟好一点,而且他只有一个session在回滚的时候,也比较容易理解 那我们什么时候需要使用openSession而不应该用openCurrentSession,或则说在什么情况下openSession的优势大于openCurrentSession呢,这个优势是什么 openCurrentSession的使用是有条件限制的,必须在事务存在的情况下(好像记得是这样的)。。。 openSession你想啥时候用都可以,只要你不怕浪费资源 一般来说我们都会把session绑定到当前线程上,而openCurrentSession就是去当前线程里取,所以在利用openCurrentSession之前,肯定调用了一次openSession 其实我没太搞明白你要问什么 |
|
返回顶楼 | |
发表时间:2009-04-21
shenglongq 写道 taupo 写道 这个问题可以用spring的事务管理解决
恩,可以解决,但是为什么要出现openSession和openCurrentSession这2种方法呢 我现在只觉得在资源节省上来说openCurrentSession跟好一点,而且他只有一个session在回滚的时候,也比较容易理解 那我们什么时候需要使用openSession而不应该用openCurrentSession,或则说在什么情况下openSession的优势大于openCurrentSession呢,这个优势是什么 这和优势无关,这个是需求相关,有时候你需要同时进行2个并发的无关事务的时候,你就需要2个独立的session。 比如,你要写log。 |
|
返回顶楼 | |
发表时间: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位达人的解答! |
|
返回顶楼 | |