博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.Spring整合Hibernate_3_HibernateTemplate
阅读量:6336 次
发布时间:2019-06-22

本文共 2426 字,大约阅读时间需要 8 分钟。

将sessionFactory 注入给 hibernateTemplate,让hibernateTemplate帮我们完成一些模板代码
1     2 
3
4
5

 

HibernateTemplate的使用:

  

1 @Component("userDAO")  2 public class UserDAOImpl implements UserDAO{ 3     HibernateTemplate hibernateTemplate = null; 4  5     public HibernateTemplate getHibernateTemplate() { 6         return hibernateTemplate; 7     } 8      9     //注入HibernateTemplate10     @Resource11     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {12         this.hibernateTemplate = hibernateTemplate;13     }14 15     @Override16     public void save(User user) {17         //让 HibernateTemplate帮我来创建session,提交session,我只需要填 中间 最核心的( 调用 Session的 哪个方法)18         //这体现了 一种设计模式:Template Method(模板方法)  只需要让你填最核心的内容,其他重复的东西 我帮你写19         //具体实现过程:1.当  hibernateTemplate.save 执行后, hibernateTemplate因为有sessionFactory,所以可以帮我们完成:session的创建,事务的开启等20         //2.之后 hibernateTemplate 会调用  HibernateCallback 把这个 session 交给  HibernateCallback的  doInHibernate方法21         //3.在HibernateCallback的  doInHibernate 方法中,调用session的save方法22 //即hibernateTemplate完成一些模板代码,而HibernateCallback 回调 核心代码23         //所以   Callback:回调/钩子函数24         hibernateTemplate.save(user);        25     }26     27     28 }

 

第二种方式:

  

1 //为所有DAOImpl创建一个父类,里面注入了HibernateTemplate,所有子类都可以直接使用父类的  2 @Component 3 public class SuperDAO { 4     private HibernateTemplate hibernateTemplate; 5  6     public HibernateTemplate getHibernateTemplate() { 7         return hibernateTemplate; 8     } 9     10     @Resource11     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {12         this.hibernateTemplate = hibernateTemplate;13     }14 15 }
1 @Component("logDAO")  2 public class LogDAOImpl extends SuperDAO implements LogDAO{ 3      4     //继承的父类DAO中 注入了 HibernateTemplate  所以子类中可以直接使用 5     @Override 6     public void saveMsg(Log log) { 7         this.getHibernateTemplate().save(log); 8     } 9     10     11 }

 

第三种方式:

  

1 //另外的一种解决方案 2 //继承DaoSupport,写一个 set,将SessionFactory 注入到这个这个方法,然后,super.setSessionFactory  这样父类就有了 sessionFactory  3 //使用Spring的 注入的 时候 ,是把bean对象注入到 set 方法的参数里面 4  5 @Component 6 public class SuperDAO extends HibernateDaoSupport { 7      8     @Resource(name="sessionFactory") 9     public void setSupperSessionFactory(SessionFactory sessionFactory) {10         super.setSessionFactory(sessionFactory);11     }12 }

 

转载于:https://www.cnblogs.com/xuzekun/p/7400184.html

你可能感兴趣的文章
11.13. reload
查看>>
24.2. Styles
查看>>
第 7 章 SQL
查看>>
OK335xS U-boot 编译问题&无Linux shell 问题
查看>>
评价中的星效果实现
查看>>
第 6 章 Workstation
查看>>
【机器学习笔记之七】PCA 的数学原理和可视化效果
查看>>
如何运行开源的安卓项目?
查看>>
5.12. standard input/output
查看>>
CentOS使用安装光盘建立本地软件源
查看>>
JavaScript 滑移效果
查看>>
[SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap
查看>>
【java JVM】JVM中类的加载,加载class文件的原理机制
查看>>
Apache2.4为什么启动报错Cannot load php5apache2_4.dll into server
查看>>
在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储
查看>>
2.2. 运行 Spring boot 项目
查看>>
用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!
查看>>
最小的镜像 - 每天5分钟玩转容器技术(9)
查看>>
[Everyday Mathematics]20150302
查看>>
写给立志做程序员(码农)的大学生
查看>>