获得hibernate,session的方式:
this.getSession();
this.getHibernateTemplate().getCurrentSession();
this.getHibernateTemplate().openSession();
通过session可以得到Criteria,query
获得session进行操作,需要自己关闭session========openSessionInView,不推荐使用
缺点:不用关心事务,创建session,销毁session。都需要在程序中设置
从上面的缺点:引入getHibernate()函数,hibernate自动处理事务,创建session,销毁session
getHibernateTemplate().find(Hql)//只能使用hql
getHibernateTemplate().delete();
getHiberanteTemplate().save();
getHibernateTemplate().update();
等等
getHibernateTemplate().execute(new HibernateCallBack())方法
使用getHIbernateTemplate()的execute方法,在hibernateCallBack中获得session,希望这些操作位于同一事务中。
this.getSession();
this.getHibernateTemplate().getCurrentSession();
this.getHibernateTemplate().openSession();
通过session可以得到Criteria,query
获得session进行操作,需要自己关闭session========openSessionInView,不推荐使用
缺点:不用关心事务,创建session,销毁session。都需要在程序中设置
从上面的缺点:引入getHibernate()函数,hibernate自动处理事务,创建session,销毁session
getHibernateTemplate().find(Hql)//只能使用hql
getHibernateTemplate().delete();
getHiberanteTemplate().save();
getHibernateTemplate().update();
等等
getHibernateTemplate().execute(new HibernateCallBack())方法
使用getHIbernateTemplate()的execute方法,在hibernateCallBack中获得session,希望这些操作位于同一事务中。
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
//criteria
Criteria criteria = session.createCriteria(entityClass);
criteria.setFirstResult(arg);
criteria.setMaxResults(arg0);
criteria.uniqueResult();
//query
Query query = session.createQuery(hql);
session.createSQLQuery(sql);
query.setParameter(arg0, arg1);
query.list();
return null;
}
});
******getHibernateTemplate.execute(new hibernateCallBack())满足hibernateTemplate情况下,还提供session的访问。这就是为什么使用hibernateCallBack()方法