Spring中集成Hibernate
来源:互联网 发布:anywhere软件源 编辑:程序博客网 时间:2024/05/22 02:07
数据持久化的高级需求:
延迟加载(lazy loading):随着对象关系变得越来越复杂,有时候我们并不希望立即获取完整的对象间关系。借助于延迟加载,我们可以只抓取需要的数据。我的理解是:例如,对象B是对象A的一个属性,如果我们只需要对象A的数据,那么在加载A对象的时候,就会加载B对象的数据,如果数据是大量的,那么这个就是一个开销很大的操作。借助于延迟加载,我们可以只取我们所需要的A对象的数据。
预先抓取(eager fetching):与延迟加载是相对的。借助于预先抓取,我们可以使用一个查询获取完整的关联对象。我的理解是:对象B是对象A的一个属性,我们需要A对象和B对象的数据,可能需要进行多次查询,预先抓取可以在一个操作中就将所有数据全部从数据库提取出来,避免多次查询。
级联(cascading):有时候,更改数据库中某一个表,会同时需要修改其他表。我的理解是:例如,学生表和学生选课表,如果我们更改学生表里的学生对象,那么我们就希望同时可以更改学生选课表的学生对象;如果我们删去一个学生对象,那么就需要删去该学生对象的选课对象。
Spring支持的持久化框架有:Hibernate,iBATIS,JAVA数据对象(JAVA Data Objects,JDO)和JAVA持久化API。那么Spring是如何集成Hibernate的?
Spring提供了模板类来抽象Hibernate的持久化功能。以前,是通过HibernateTemplate来简化Hibernate的工作,它的职责之一就是管理Hibernate的session,但它的不足之处是存在一定程度的侵入性。在DAO中使用HibernateTemplate时,DAO类就会与SpringAPI产生耦合。
Hibernate3引入了上下文session(Contextual session),确保每个事务使用同一个session。
获取Hibernate Session对象的标准方式是借助于Hibernate的SessionFactory接口的实现类,SessionFactory主要负责HibernateSession的打开、关闭和管理。
如果使用XML文件来配置Hibernate Session,那么如下:
<bean id="sessionfactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="datasource" ref="datasource"> <property name="mappingResource">//配置一个或者多个hibernate映射文件,定义了应用程序的持久化策略 <list> <value>A.hbm.xml</value>//A是对象 </list> </property> <property name="hibernateProperties">//该属性配置了hibernate如何进行操作的细节 <props> <prop key="dialect">org.hibernate.dialect.HSQLDialect</prop>//配置hibernate使用Hypersonic数据库并且要按照HSQLDialect来构建SQL /props> <property> </bean>
如果用注解的方式来定义持久化,那么如下
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="datasource"/>//从哪里获得数据库连接<property name="packageToscan" value="com.habuma.A.domain" /><property name="hebernateProperties">//要使用哪一种数据库 <props> <prop key="dialect">org.hibernate.dialect.HSQLDialect</prop> </props> </property></bean>
- Spring中集成Hibernate
- 在Spring中集成Hibernate事务
- 在Spring中集成Hibernate事务
- 在Spring中集成Hibernate事务
- 在Spring中集成Hibernate事务
- 在Spring中集成Hibernate事务
- 在Spring中集成Hibernate事务
- spring中配置数据库连接(集成Hibernate)
- hibernate中配置数据库连接(集成spring)
- 集成struts2 spring hibernate中使用注解
- 5.4 在Spring中集成Hibernate
- spring in action 5.Spring中集成Hibernate
- spring struts hibernate 集成
- spring集成hibernate事务处理
- Spring+Sturts2+Hibernate集成
- spring和hibernate集成
- Struts+Spring+Hibernate集成
- 概括spring hibernate集成
- Comparable和Comparator的区别
- 进程组、作业、会话
- 配置SSH无密码登陆
- Android解决ScrollView中布局不能撑满全屏的问题(记录)
- application实时统计功能的实现。。。求指教。。
- Spring中集成Hibernate
- Observer代替广播实现注册,通知,更新数据
- 如何调试分析Android中发生的tombstone
- Mysql日志解析
- GNU C
- 【C++】学习笔记五十二——友元
- 贝叶斯决策 实例
- 主题三 编译过程介绍----20.#和##运算符的使用分析
- HDU2433 Travel 最短路径树