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最 ...
随机推荐
- Java8 根据对象某个属性值去重
list中的对象某个属性存在重复时将重复的对象去重 //根据skuAttrValueName值去重 List<SkuValue> uniqueSkuValues = skuValues.s ...
- JAVA 基础编程练习题44 【程序 44 偶数的素数和】
44 [程序 44 偶数的素数和] 题目:一个偶数总能表示为两个素数之和. package cskaoyan; public class cskaoyan44 { @org.junit.Test pu ...
- 关于运维之故障复盘篇-Case Study
关于故障的事后复盘,英文名 Case Study是非常有必要做的,当然是根据故障的级别,不可能做到每个故障都Case Study,除非人员和时间充足: 文档能力也是能力的一种,一般工程师的文档能力比较 ...
- Spring Boot连接MySQL报错“Internal Server Error”的解决办法
报错信息如下: {timestamp: "2018-06-14T03:48:23.436+0000", status: 500, error: "Internal Ser ...
- ivy使用Maven阿里云镜像的问题
ivy默认使用的Maven仓库下载速度有点慢,所以想改成国内的,添加如下resolver: <ibiblio name="working-chinese-mirror" ro ...
- ubuntu安装以及卸载软件
dpkg安装以及卸载软件 deb文件是linux发行版debian系统的安装包格式,还有像基于debian系统的发型版ubuntu等系统就是使用的deb格式安装包,我们可以使用dpkg命令进行安装管理 ...
- 解决mosh: Nothing received from server on UDP port 60001 环境: centos7.1
主要问题在于有的教程使用iptables命令来开启对应端口, 但是centos7.1中虽然iptables仍然存在, 但是没有默认安装相关服务, 而是使用firewalld来管理防火墙. 所以我开始以 ...
- jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具
1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...
- Had I not seen the Sun(如果我不曾见过太阳)
Had I not seen the Sun by Emily Dickinson Had I not seen the Sun I could have borne the shade But Li ...
- OpenCV_CS.测试
1.在C#中使用OpenCV(使用OpenCVSharp) - jsxyhelu - 博客园.html(https://www.cnblogs.com/jsxyhelu/p/9669583.html) ...