初涉HibernateTemplate的使用,有几点疑虑,欢迎大家指点。
虽然spring封装了很多方法,但是总有的业务HibernateTemplate是无法实现的,也可能是本人学术不精。
这时候就要用session了。虽然HibernateTemplate提供了callback接口可以拿到session,或者HibernateTemplate.getSessionFactory().openSession().但是总觉得不灵。在service层调用DAO,再调用HibernateTemplate里面的方法,觉得特臃肿,调来调去,可能还涉及到初始化。会不会影响效率?
在网上看到用HibernateTemplate的好处有两个:
1、提供了丰富的CRUD操作。不需自己写代码。
2、HibernateTemplate自己打开session并关闭,不需手动处理。
放弃HibernateTemplate,有人在DAO中这样实现,用spring注入factory。
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
然后由sessionfactory得到session
至此,本人有几个问题,希望大家不吝赐教。
1、用自己的语言来描述一下session是什么,能做什么,怎么实现的?
2、HibernateTemplate的好处到底是什么?
3、HibernateTemplate中方法的频繁调用是否影响效率?
4、SessionFactory是如何实现getCurrentSession()的,不是每次都new吧?
5、每次数据库操作都要用SessionFactory得到session,怎么关闭,是否必须关闭?
6、用session实现数据库操作效率会不会高一点?
7、spring和hibernate都封装了SessionFactory类,他们有什么不同,有什么优缺点?