10.Spring整合Hibernate_3_HibernateTemplate
将sessionFactory 注入给 hibernateTemplate,让hibernateTemplate帮我们完成一些模板代码
<!-- 使用HibernateTemplate -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
HibernateTemplate的使用:
@Component("userDAO")
public class UserDAOImpl implements UserDAO{
HibernateTemplate hibernateTemplate = null;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
//注入HibernateTemplate
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
@Override
public void save(User user) {
//让 HibernateTemplate帮我来创建session,提交session,我只需要填 中间 最核心的( 调用 Session的 哪个方法)
//这体现了 一种设计模式:Template Method(模板方法) 只需要让你填最核心的内容,其他重复的东西 我帮你写
//具体实现过程:1.当 hibernateTemplate.save 执行后, hibernateTemplate因为有sessionFactory,所以可以帮我们完成:session的创建,事务的开启等
//2.之后 hibernateTemplate 会调用 HibernateCallback 把这个 session 交给 HibernateCallback的 doInHibernate方法
//3.在HibernateCallback的 doInHibernate 方法中,调用session的save方法
//即hibernateTemplate完成一些模板代码,而HibernateCallback 回调 核心代码
//所以 Callback:回调/钩子函数
hibernateTemplate.save(user);
}
}
第二种方式:
//为所有DAOImpl创建一个父类,里面注入了HibernateTemplate,所有子类都可以直接使用父类的
@Component
public class SuperDAO {
private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
} @Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} }
@Component("logDAO")
public class LogDAOImpl extends SuperDAO implements LogDAO{
//继承的父类DAO中 注入了 HibernateTemplate 所以子类中可以直接使用
@Override
public void saveMsg(Log log) {
this.getHibernateTemplate().save(log);
}
}
第三种方式:
//另外的一种解决方案
//继承DaoSupport,写一个 set,将SessionFactory 注入到这个这个方法,然后,super.setSessionFactory 这样父类就有了 sessionFactory
//使用Spring的 注入的 时候 ,是把bean对象注入到 set 方法的参数里面 @Component
public class SuperDAO extends HibernateDaoSupport { @Resource(name="sessionFactory")
public void setSupperSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
}
10.Spring整合Hibernate_3_HibernateTemplate的更多相关文章
- 10 Spring框架 AOP (三) Spring对AspectJ的整合
上两节我们讲了Spring对AOP的实现,但是在我们的开发中我们不太使用Spring自身的对AOP的实现,而是使用AspectJ,AspectJ是一个面向切面的框架,它扩展了Java语言.Aspect ...
- Spring整合Ehcache管理缓存
前言 Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存. Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现.它 ...
- MyBatis学习(四)MyBatis和Spring整合
MyBatis和Spring整合 思路 1.让spring管理SqlSessionFactory 2.让spring管理mapper对象和dao. 使用spring和mybatis整合开发mapper ...
- Mybatis与Spring整合,使用了maven管理项目,作为初学者觉得不错,转载下来
转载自:http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype ...
- Spring整合Ehcache管理缓存(转)
目录 前言 概述 安装 Ehcache的使用 HelloWorld范例 Ehcache基本操作 创建CacheManager 添加缓存 删除缓存 实现基本缓存操作 缓存配置 xml方式 API方式 S ...
- Intellij IDEA +MAVEN+Jetty实现Spring整合Mybatis
1 pom.xml(这里出现transaction错误,是版本的问题) <project xmlns="http://maven.apache.org/POM/4.0.0" ...
- Spring整合jdbc
首先web.xml文件跟往常一样,加载spring容器和加载org.springframework.web.context.ContextLoaderListener读取applicationCont ...
- Spring学习总结(六)——Spring整合MyBatis完整示例
为了梳理前面学习的内容<Spring整合MyBatis(Maven+MySQL)一>与<Spring整合MyBatis(Maven+MySQL)二>,做一个完整的示例完成一个简 ...
- Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二
接着上一篇博客<Spring整合MyBatis(Maven+MySQL)一>继续. Spring的开放性和扩张性在J2EE应用领域得到了充分的证明,与其他优秀框架无缝的集成是Spring最 ...
随机推荐
- css中em小于1时chrome字体大小和firefox字体大小不一致的问题
css中em设置为0.8,结果页面显示,chrome字体比firefox字体大了不少. chrome有默认字体大小,默认为12px.设置的字体大小小于12px时,也是按照12px来显示. firefo ...
- iOS-自定义导航控制器
BasicNavigationViewController:UINavigationViwController /* 隐藏导航底部线条 */ -(void)viewDidLoad{ [super ...
- AssassinGo: 基于Go的高并发可拓展式Web渗透框架
转载自FreeBuf.COM AssassinGo是一款使用Golang开发,集成了信息收集.基础攻击探测.Google-Hacking域名搜索和PoC批量检测等功能的Web渗透框架,并且有着基于Vu ...
- Hyperledger Fabric 常用命令
Peer常用命令: #peer chaincode --help #peer channel list --help --logging-level <string> #<strin ...
- IDEA debug漏洞第一篇(weblogic,cve-2017-10271)
在weblogic.wsee.jaxws.WLSServletAdapter的129行打点 if (var2.getMethod().equals("GET") || var2.g ...
- Ubuntu14.04LTS下 JAVA+HADOOP
首先在虚拟机中安装了Ubuntu14.04LTS 前期工作: 更新源.更新安装vim.安装vmtools工具.安装中文输入法 sudo apt-get update sudo apt-get inst ...
- Python Requests库 form-data 上传文件操作
请求数据示例: ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="id" ...
- ZoomEye
* https://www.zoomeye.org/ *类似工具 IVRE 1. 摄像头漏洞 (1)http://www.2cto.com/Article/201401/269458.html (2) ...
- MongoDB的可视化工具(Studio 3T)的安装
通过可视化工具,我们可以不用在命令行操作MongoDB了,可以直接使用类似于SQLyog的软件进行相关操作 1.下载地址(二者择其一即可),可使用迅雷来进行下载,否则下载速度极其慢 2018.4.6版 ...
- Python if __name__ == '__main__': 理解
if __name__ == '__main__':是为了区分.py文件是自己直接被执行还是被其他文件调用. 当.py文件直接被执行时,默认的是 __name__ = '__main__',因此条件成 ...