Spring高级程序设计 11 Spring对Hibernate的支持
来源:互联网 发布:威尔逊主义 知乎 编辑:程序博客网 时间:2024/05/16 01:42
3Hibernate支持介绍
Spring的LocalSessionFactoryBean的简化配置:
使用HibernateTemplate或者使用HibernateDaoSupport:
当然我们使用HibernateDaoSupport的时候,需要sessionFactory的注入,那么就可以先定义一个HibernateDaoSupport的抽象Spring bean,然后让继承HibernateDaoSupport的bean定义一个parent:
这样做的好处在于helloHibernate可以省略下面两个东西:
4在企业级应用程序中使用Hibernate
1、阻止更新脏数据
参照《hibernate 控制并发访问》http://blog.csdn.net/partner4java/article/details/6926546
2、对象等价性
当我们在Hibernate中使用持久化集合时,比如set。那么就需要考虑等价性。实现自然等价或者数据库等价。
主要是根据业务需求重载hashcode和equals
3、事务支持
使耽搁DAO方法具有事务性不是一个好的实战,因为他讲在服务层智商定义事务的边界。DAO层应该是一个域对象和一些数据存储方式间的简单转换器。
配置文件,添加事务支持:
4、延迟加载
只是在需要的时候抓取数据。
Spring的LocalSessionFactoryBean的简化配置:
- <context:property-placeholder location="classpath:jdbc.properties" />
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="${driverClassName}"/>
- <property name="url" value="${url}"/>
- <property name="username" value="${username}"/>
- <property name="password" value="${password}"/>
- <property name="initialSize" value="${initialSize}"/>
- <property name="maxActive" value="${maxActive}"/>
- <property name="maxIdle" value="${maxIdle}"/>
- <property name="minIdle" value="${minIdle}"/>
- <property name="maxWait" value="${maxWait}"/>
- <property name="defaultAutoCommit" value="${defaultAutoCommit}"/>
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
- <property name="dataSource" ref="dataSource"></property>
- </bean>
使用HibernateTemplate或者使用HibernateDaoSupport:
当然我们使用HibernateDaoSupport的时候,需要sessionFactory的注入,那么就可以先定义一个HibernateDaoSupport的抽象Spring bean,然后让继承HibernateDaoSupport的bean定义一个parent:
- ....
- <bean id="hibernateDaoSupport" abstract="true" class="org.springframework.orm.hibernate3.support.HibernateDaoSupport">
- <property name="sessionFactory" ref="sessionFactory"/>
- </bean>
- <bean id="helloHibernate" class="...." parent="hibernateDaoSupport"/>
- ....
这样做的好处在于helloHibernate可以省略下面两个东西:
- <property name="dataSource" ref="dataSource"></property>
- <property name="hibernateTemplate" ref="hibernateTemplate"></property>
4在企业级应用程序中使用Hibernate
1、阻止更新脏数据
参照《hibernate 控制并发访问》http://blog.csdn.net/partner4java/article/details/6926546
2、对象等价性
当我们在Hibernate中使用持久化集合时,比如set。那么就需要考虑等价性。实现自然等价或者数据库等价。
主要是根据业务需求重载hashcode和equals
3、事务支持
使耽搁DAO方法具有事务性不是一个好的实战,因为他讲在服务层智商定义事务的边界。DAO层应该是一个域对象和一些数据存储方式间的简单转换器。
配置文件,添加事务支持:
- <context:property-placeholder location="classpath:jdbc.properties" />
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="${driverClassName}"/>
- <property name="url" value="${url}"/>
- <property name="username" value="${username}"/>
- <property name="password" value="${password}"/>
- <property name="initialSize" value="${initialSize}"/>
- <property name="maxActive" value="${maxActive}"/>
- <property name="maxIdle" value="${maxIdle}"/>
- <property name="minIdle" value="${minIdle}"/>
- <property name="maxWait" value="${maxWait}"/>
- <property name="defaultAutoCommit" value="${defaultAutoCommit}"/>
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
- <property name="dataSource" ref="dataSource"></property>
- </bean>
- <bean id="transactionManager"
- class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <!-- 事务通知 -->
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="new*" propagation="REQUIRED" isolation="DEFAULT" />
- <tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT" />
- <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" />
- <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" />
- <tx:method name="bulk*" propagation="REQUIRED" isolation="DEFAULT" />
- <tx:method name="load*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
- <tx:method name="get*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
- <tx:method name="query*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
- <tx:method name="find*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
- <tx:method name="is*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
- <tx:method name="*" propagation="SUPPORTS" isolation="DEFAULT" />
- </tx:attributes>
- </tx:advice>
- <aop:config>
- <aop:advisor pointcut="execution(* *..*Service*.*(..))" advice-ref="txAdvice" />
- </aop:config>
4、延迟加载
只是在需要的时候抓取数据。
- Spring高级程序设计 11 Spring对Hibernate的支持
- Spring对Hibernate的支持
- spring对Hibernate的支持
- Spring对Hibernate的支持
- spring中对hibernate的支持
- spring中对hibernate的支持例子
- Spring 对hibernate的强大支持
- spring对hibernate批量操作的支持
- Spring对Hibernate的事务支持
- spring对hibernate的支持详解
- spring对hibernate的支持详解
- spring对hibernate延迟加载的支持
- spring对hibernate的支持详解
- spring对hibernate批量操作的支持
- spring对hibernate的支持详解
- 什么是Spring的DAO,Spring对JDBC/Hibernate的支持
- MyEclipse中删除对Struts、Hibernate、Spring的支持
- MyEclipse中删除对Struts、Hibernate、Spring的支持 (转)
- 改变IE查看源文件的方法
- WebSphere环境下的SSO(Single sign-on:单点登录、全网漫游)实现之: -- SSO实现技术准备
- 如何学好C语言
- net试题以及答案
- WebSphere环境下的SSO(Single sign-on:单点登录、全网漫游)实现之: 二 SSO(Single Sign-On)实现步骤
- Spring高级程序设计 11 Spring对Hibernate的支持
- 几个ASP.NET面试题目
- 彩色复合视频信号DECODE图像质量不好的原因
- hibernate——Session接口中定义的saveOrUpdate()方法浅析
- 让gedit 成为强大的C语言IDE
- 在XCode4.2中添加MainWindow.xib文件
- 安装redhat时,出现“该光盘无法被挂载”的解决办法
- 彭明盛,Samuel J Palmisano,2010年的工资单
- 拷贝CEdit控件中的内容