前提条件:你的类必须继承HibernateDaoSupport 
一: 
回调函数:

  1. public List getList(){
  2. return (List ) getHibernateTemplate().execute(
  3. new HibernateCallback() {
  4. public List doInHibernate(final Session s)
  5. throws HibernateException, SQLException {
  6. StringBuffer sb = new StringBuffer();
  7. Query query = s.createSQLQuery(sb.toString());//[b]执行普通sql[/b]
  8. Query query = s.createQuery(sb.toString());//   [b]执行hql [/b]
  9. List list = query.list();
  10. return list ;
  11. }
  12. });
  13. }

采用这种做法的好处是:不用关心事务。session的创建和销毁,一切都在程序内部完成。看看名字doInHibernate就知道好处了。不好的是程序看起来比较乱!个人认为。 
二:

  1. getHibernateTemplate().find():
  2. ist list = getHibernateTemplate().find(String sql ):

这种的前提是sql必须是hql ,原始sql 不能执行。

三: 
自己获取session处理。 
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession(); 
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview,个人认为不推荐使用!

其他: 
getHibernateTemplate.delete(Object);

getHibernateTemplate.save(Object); 
getHibernateTemplate.update(Object);

总结:推荐使用回调函数。

补充百科:

Spring的Hibernate ORM 框架带来了方便的HibernateDaoSupport类,你的DAO类可以继承它:
public class StudentDaoHibernate extends HibernateDaoSupport implements StudentDao{
.................
}
如果你选择这种设计,就需要动态注入SessionFactory而HibernateDaoSupport包含这个属性.这个类提供了一个方便的方法getHibernateTemplate(); 就能得到HibernateTemplate的一个实例.它也有getSession()和releaseSession,以便于你应为某些原因而不使用HibernateTempate的情况下执行Hibernate操作。
HibernateDaoSupport提供了基于AOP事务的自动处理,程序员完全可以不用理会事务的开始与提交。在JDBC中一个Connection对象使用一个事务,那么在Hibernate中一个事务肯定要关联一个SessionFactory了,然而这个SessionFactory却没有在DAO中体现。其实主要的原因是HibernateDaoSupport类已经默默地做了封装的工作,它用一个setSessionFactory方法将SessionFactory进行注入,所以继承自HibernateDaoSupport类的DAO都会具有SessionFactory的属性,从而可以通过SessionFactory创建Session实例操作数据库。
在继承HibrnateDaoSupport的DAO实现里,Hibernate Session的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次session”的策略,自动提高数据库访问的性能。

最新文章

  1. C++ 利用 libxl 将 Excel 文件转化为 Xml 文件
  2. js-JavaScript高级程序设计学习笔记13
  3. hadoop 1.2 集群搭建与环境配置
  4. Alisha’s Party(队列)
  5. CI框架学习——检查用户名与密码是否合法(二)
  6. php-迭代创建级联目录
  7. url加密,一般只对参数加密
  8. JetBrains 系列编译器 破解(idea,webstrom ,pycharm等)
  9. JVM 学习(一)反射、垃圾回收、异常处理--- 2019年4月
  10. Python base64编码,转图片
  11. makefile笔记7 - makefile函数
  12. pass parameter by endpoint, this is for websocket
  13. mongodb数据库添加权限及简单数据库命令操作笔记
  14. 和我一起打造个简单搜索之Logstash实时同步建立索引
  15. 20165215 2017-2018-2 《Java程序设计》第4周学习总结
  16. ionic toggle点击返回true/false支持自定义
  17. MySQL中如何实现select top n
  18. python开发_configparser_解析.ini配置文件工具_完整版_博主推荐
  19. crtmpserver实现防盗流和流推送验证
  20. 如何用 testNG 生成测试报告

热门文章

  1. C# oracle to_date 日期型 参数传值
  2. 看懂 Fiddler 的瀑布图
  3. 判断\r\n结束标准
  4. About the Cron Expression
  5. so文件相关
  6. Python 中Lambda 表达式 实例解析
  7. SparkStreaming 监控文件目录
  8. wireshark源码分析 一
  9. 【Ruby】ruby安装
  10. MySql常用命令集