HibernateCallback对象 回调方法用来创建gethibernatetemplate没有的方法
来源:互联网 发布:最好网络理财 编辑:程序博客网 时间:2024/05/19 17:25
我们使用HibernateTemplate,有一个很重要的原因就在于我们不想直接控制事务,不想直接去获取,打开Session,开始一个事务,处理异常,提交一个事务,最后关闭一个Session。我们自己只专注于业务,不想去作这些重复而繁琐的操作。我们把这些责任全部委托给了HibernateTemplate,然后使用声明式的配置来实现这样的功能。
如果我们通过类似getSession()这样的方法获得了Session,那就意味着我们放弃了上面所说的一切好处。所以,如果楼主的业务类如果在使用HibernateTemplate的同时,又可以直接得到Session(而不是通过HibernateCallback),那么我敢说楼主的代码一定有bug
你当然可以直接使用Query。但是问题是HibernateTemplate提供了相当多有用的辅助功能。我们想用它提供的辅助功能。但是HibernateTemplate包装了Hibernate的代码,使用了它以后不能直接访问到Session了,也就是说,我们无法通过Session对象得到Query了。所以,这种情况下我们当然无法直接用Query来查询了。
HibernateTemplate提供这个HibernateCallback,就是为了满足这种使用了HibernateTemplate的情况下,仍然需要直接访问Session的需求而来的。它提供了在HibernateTemplate里面直接访问Session的能力。
这个就是我们要使用HibernateCallback的原因。
最后提醒一下楼主,HibernateCallback是一个对象,而不是一个方法...
long maxId = 0l;
maxId = ((Long) (this.getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(org.hibernate.Session session)
throws HibernateException, SQLException {
String sql = "select max(id) from Mail";
Query query = session.createQuery(sql);
return query.list();
}
}).get(0))).longValue();
return maxId;
}
- HibernateCallback对象 回调方法用来创建gethibernatetemplate没有的方法
- HibernateCallback对象 回调方法用来创建gethibernatetemplate没有的方法
- getHibernateTemplate().execute(new HibernateCallback())方法的优点
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- getHibernateTemplate().execute(new HibernateCallback())方法
- HibernateCallback()的方法
- gethibernatetemplate的find方法
- getHibernateTemplate()的方法介绍
- 用来操作Array对象的方法
- getHibernateTemplate方法
- getHibernateTemplate()方法
- getHibernateTemplate()方法
- 讲解 hashCode() 方法和 equals() 方法的文章(转载)
- 常用的正则表达式
- “认知反映测试”——衡量一个人是“在短暂的思考后迅速解决问题”还是“通过一段长反射弧深思熟虑后再做决定”
- hdu 1176 - 免费馅饼 (解题报告)
- Android+PHP+Mysql实现用户登录
- HibernateCallback对象 回调方法用来创建gethibernatetemplate没有的方法
- ankhsvn 提交 obj 冲突
- Tomcat 启动WebApp报错
- linux下find命令详解
- UIImagePickerController 返回之后,高度下降
- HDOJ 1686 POJ 3461 Oulipo kmp
- 零基础学python-import与from的区别
- UILable
- Linux学习笔记