日期:2014-05-20  浏览次数:20678 次

问个ssh线程安全的问题
我在想,如果spring向业务层注入DAO Bean时每次都是新new一个,那在DAO类中使用hibernate session时是不是就不用考虑并发的问题了?一律sessionFactory.openSession()就行了吧?实际工作中都是怎么处理的呢??

spring有个声明式的事务管理功能,这个功能是不是就是为了解决我考虑的这个问题的?何时会用到这个功能呢?难道在DAO Bean是单例模式的情况下用??。。纠结好久了,求大牛们帮助~

------解决方案--------------------
一般如果用 spring 托管hibernate 的话dao类都是继承 hibernateDaosupport类....基本都不用考虑打不打开session啊.....
------解决方案--------------------
不管你用啥都要考虑并发的问题
你想用程序去解决高并发的问题那简直就是做无用功,只能靠硬件去添补缺陷。
------解决方案--------------------
不需考虑,每次open都是新连接,注意关闭即可。

声明事务主要用于复杂的多表更新操作,常归都不需要。
------解决方案--------------------
sessionFactory本身就是利用单例模式吧,hibernate映射数据的时候CRUD都是封装好的。
------解决方案--------------------
想太多了把......
------解决方案--------------------
你说的这种情况,两个手段来解决:
1、依赖于Sping提供的事务管理(基于拦截),这个可以Google下,挺方便的;可以在一个Service类中操作多个DAO,使用同一个上下文;
2、自己管理Session。

如果关联关系不是复杂到吐血的话,推荐尽量用前者。
------解决方案--------------------
是的,强烈推荐以这个为基础。
------解决方案--------------------
以目的为导向而已。
你的原始目标并不是必须以“XXOO”来实现的话要怎么样?
而是如果我用“XXOO”来实现是不是很好?