HibernateTemplate自动事务
?hibernatetemplate自动事务
?
在使用hibernatetemplate的时候,不配置spring事务 也能对数据库进行CRUD。
?
?
刚开始好奇怪,在过去不配置事务是不能对数据库进行CRUD的,而为什么在现项目中把所有的事务配置xml都删除后,还是可以对数据库进行操作。
?
为什么hibernatetemplate还是依然可以对数据库进行操作呢,
?
其实在hibernatetemplate中 是手动的hibernate事务。
?
首先是HibernateTemplate的定义:?
?
?
public class HibernateTemplate extends HibernateAccessor implements HibernateOperations { ... }?继承HibernateAccessor,我们再来看看HibernateAccessor,HibernateAccessor里最重要的就是设置SessionFactory?
?
再看HibernateOperations接口,HibernateOperations里定义了我们常用的get(...)、find(...)、save(...)等操作,?
其中最重要的就是Object execute(HibernateCallback action) throws DataAccessException;?
现在我们又多了一个接口:HibernateCallback,HibernateCallback回调接口,它里面只有一个方法的定义,?
Object doInHibernate(Session session) throws HibernateException, SQLException;?
基本上相关联的比较重要的东东我们提到了。?
?
?
public Object execute(HibernateCallback action) throws DataAccessException { 先通过SessionFactory获取到Hibernate的Session对象 执行HibernateCallback的对象的doInHibernate(...)的方法 看看上面我们的“分页查询Info表”的方法 关闭Session 返回查询结果 } ??