Spring的Hibernate ORM 框架带来了方便的HibernateDaoSupport类,你的DAO类可以继承它:
public class StudentDaoHibernate extends HibernateDaoSupport implements StudentDao{
.................
}
如果你选择这种设计,就需要织入SessionFactory--HibernateDaoSupport包含这个属性.这个类提供一个方便的方法
getHibernateTemplate(); 很容易就能得到HibernateTemplate的一个实例.它也有getSession()和closeSessionIfNecessary()方法,以便于你应为某些原因而不使用HibernateTempate的情况下执行Hibernate操作。
刚刚看到 spring 对于hibernate的封装,一切的核心在也一个spring 中HibernateDaoSupport类,从它的名字我们就应该可以明白它的作用在来看看 引入的包:
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.type.Type;
。。。。。。。。
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.type.Type;
。。。。。。。。
还有一些接口
void delete(Object entity, LockMode lockMode) throws DataAccessException;
void deleteAll(Collection entities) throws DataAccessException;
。。。。。。。。
很明显是一个hibernate,基本操作的封装。
来看看这个方法
public void delete(final Object entity) throws DataAccessException {
execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
checkWriteOperationAllowed(session);
session.delete(entity);
return null;
}
});
}
这里其实就是调用了hibernate 的 真正对数据库的操作。
public void delete(Object object) throws HibernateException;
void delete(Object entity, LockMode lockMode) throws DataAccessException;
void deleteAll(Collection entities) throws DataAccessException;
。。。。。。。。
很明显是一个hibernate,基本操作的封装。
来看看这个方法
public void delete(final Object entity) throws DataAccessException {
execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
checkWriteOperationAllowed(session);
session.delete(entity);
return null;
}
});
}
这里其实就是调用了hibernate 的 真正对数据库的操作。
public void delete(Object object) throws HibernateException;