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

getHibernateTemplate() and getSession()
SSH整合框架中 一个继承了HibernateDAOSupport的类 完成加载 和增删改查的操作, 有2种操作方式, 我在使用的是getHibernateTemplate(), 另外还发现了有使用 getSession() 的 方法, 这2种方法各有什么不同呢? 我从帮助没看出太大的分别.请教下

------解决方案--------------------
个人认为:getHibernateTemplate()的session不用你管理!他会自动帮你关闭!这能省去你好多功夫!不过他不支持分页,要调用回调方法才可以实现!getSession()就要自己去关闭Session,有点麻烦不过,不过简单也有简单的好处,像我这样就喜欢他的事务处理!!
------解决方案--------------------
总的来说getHibernateTemplate()要优于getSession(),因为前者是后者的封装,楼主可以去看源码,这里面的各种操作,比如find、update等操作,就是回调的hibernate的方法。
具体参见hibernate的参考手册:
copy一段
getSession()这种直接使用Hibernate访问代码的好处在于它允许你在数据访问代码中抛出 任何 checked exception,而 HibernateTemplate 却受限于回调中的unchecked exception。 注意,你通常可以将这些应用程序的异常处理推迟到回调函数之后,这样,你依然可以正常使用 HibernateTemplate。 一般来说,HibernateTemplate 类所提供的许多方法在许多情况下看上去更简单和便捷。 




------解决方案--------------------
目前在用getHibernateTemplate() !
------解决方案--------------------
getSession()好像也不用手动关闭Session吧,如果配置了Spring事物管理,session都交由spring管理了。