跟我学Spring3(8.2):对ORM的支持之集成Hibernate3
2016-03-19 15:58
519 查看
8.2 集成Hibernate3
Hibernate是全自动的ORM框架,能自动为对象生成相应SQL并透明的持久化对象到数据库。Spring2.5+版本支持Hibernate 3.1+版本,不支持低版本,Spring3.0.5版本提供对Hibernate 3.6.0 Final版本支持。
8.2.1 如何集成
Spring通过使用如下Bean进行集成Hibernate:LocalSessionFactoryBean :用于支持XML映射定义读取:
configLocation和configLocations:用于定义Hibernate配置文件位置,一般使用如classpath:hibernate.cfg.xml形式指定;
mappingLocations :用于指定Hibenate映射文件位置,如chapter8/hbm/user.hbm.xml;
hibernateProperties:用于定义Hibernate属性,即Hibernate配置文件中的属性;
dataSource:定义数据源;
hibernateProperties、dataSource用于消除Hibernate配置文件,因此如果使用configLocations指定配置文件,就不要设置这两个属性了,否则会产生重复配置。推荐使用dataSource来指定数据源,而使用hibernateProperties指定Hibernate属性。
AnnotationSessionFactoryBean:用于支持注解风格映射定义读取,该类继承LocalSessionFactoryBean并额外提供自动查找注解风格配置模型的能力:
annotatedClasses:设置注解了模型类,通过注解指定映射元数据。
packagesToScan:通过扫描指定的包获取注解模型类,而不是手工指定,如“cn.javass.**.model”将扫描cn.javass包及子包下的model包下的所有注解模型类。
接下来学习一下Spring如何集成Hibernate吧:
1、准备jar包:
首先准备Spring对ORM框架支持的jar包:
org.springframework.orm-3.0.5.RELEASE.jar //提供对ORM框架集成 |
|
slf4j-api-1.6.1.jar //核心API slf4j-log4j12-1.6.1.jar //log4j实现 |
2、对象模型定义,此处使用第七章中的UserModel:
java代码:
java代码:
5、 SessionFactory配置定义(chapter8/applicationContext-hibernate.xml):
java代码:
java代码:
7、通过SessionFactory获取Session对象进行创建和删除表:
java代码:
8、使用SessionFactory获取Session对象进行持久化数据:
java代码:
8.2.2 使用HibernateTemplate
HibernateTimplate模板类用于简化事务管理及常见操作,类似于JdbcTemplate模板类,对于复杂操作通过提供HibernateCallback回调接口来允许更复杂的操作。接下来示例一下HibernateTemplate的使用:
java代码:
而且HibernateTemplate 提供使用HibernateCallback回调接口的方法execute用来支持复杂操作,当然也自动享受到Spring管理事务的好处。
8.2.3 集成Hibernate及最佳实践
类似于JdbcDaoSupport类,Spring对Hibernate也提供了HibernateDaoSupport类来支持一致的数据库访问。HibernateDaoSupport也是DaoSupport实现:接下来示例一下Spring集成Hibernate的最佳实践:
1、 定义Dao接口,此处使用cn.javass.spring.chapter7.dao. IUserDao:
2、 定义Dao接口实现,此处是Hibernate实现:
java代码:
3、进行资源配置,使用resources/chapter7/applicationContext-resources.xml:
4、dao定义配置,在chapter8/applicationContext-hibernate.xml中添加如下配置:
java代码:
5、 最后测试一下吧(cn.javass.spring.chapter8. HibernateTest):
java代码:
8.2.4 Spring+Hibernate的CRUD
Spring+Hibernate CRUD(增删改查)我们使用注解类来示例,让我们看具体示例吧:1、首先定义带注解的模型对象UserModel2:
使用JPA注解@Table指定表名映射;
使用注解@Id指定主键映射;
使用注解@ Column指定数据库列映射;
java代码:
2.1、 定义SessionFactory:
此处使用AnnotationSessionFactoryBean通过annotatedClasses属性指定注解模型来定义映射元数据;
java代码:
java代码:
java代码:
相关文章推荐
- Java线程池的测试和分析
- Eclipse加入PHP插件并支持PHP自动提示
- [MAVEN]一、maven入门之软件的下载及配置到Eclipse中
- Eclipse真机测试注意事项
- spring入门(12)-spring与hibernate整合完成增删改查的操作(继承HibernateDaoSupport调用hibernateTemplate类)
- spring入门(11)-spring与hibernate整合完成增删改查的操作(封装HibernateTemplate模版类对象)
- java中编码
- Java基础2
- java类加载资源的问题
- Java中获取键盘事件
- Spring ResourceLoader.getResource() & getResources()的理解
- java中静态代码块的用法 static用法详解
- 在Eclipse中设置文件的默认打开方式
- java 内存机制
- java异常
- Java通过JDBC访问数据库(两种方式)
- 用JAVA代码实现验证邮箱地址是否符合
- Java Timer&TimerTask源码分析
- JavaSrcipt学习日记(一) 基础篇
- Java中,如何调用“其他类的方法中生成的实例化的对象”的属性?