全是spring惹得祸。现在才知道Spring的hibernate支持有多差。难怪hibernate的创始人要自己重新写web框架了。
目前的解决办法给我的感觉是在补HibernateTemplate的后帐。看看spring的源码就知道了。HibernateTemplate实在是太简单了。随便谁都能写一个。
分析一下问题把:
造成这一原因主要有以下几点:
(1)spring的template不完善。导致dao每次关闭session。对于hibernate来说,是否合适有待商榷
(2)spring和hiberante两者之间的冲突。两者共同管理session的生命周期。直接导致了目前的复杂性。
(3)hibernate的特性使然。hibernate是一种面向对象的解决方案。其对数据的处理方式,设计方式与普通的jdbc不同。更多的具有了面向域建模得特征。
(4)hibernate依然没有解决性能的问题。为了维持性能的可用性,同时具有MDA的特征。因此引入了多种手段进行弥补。对于高性能的运算。hibernate依然存在相当大的问题。OpenSessionInView还不能是一个令人满意的解决方案。
(5)opensessionInView隐藏了很多细节。然而,很多细节,是开发人员所必须了解的。尤其是很多业务系统,具有很强的数据敏感性。应用之前,需要对hibernate进行深入的理解。