使用Spring为Hibernate配置声明式事物

简介:             从AOP的角度看,事物跟日志一样,都是跟业务逻辑无关的东西,这两个东西通过切入方式,放到系统中,是非常合适的。下面,将Hibernate中的事物配置到Spring中,使我们在编程的时候,无需考虑事物的存在,专心的放到系统的逻辑实现上。


            从AOP的角度看,事物跟日志一样,都是跟业务逻辑无关的东西,这两个东西通过切入方式,放到系统中,是非常合适的。下面,将Hibernate中的事物配置到Spring中,使我们在编程的时候,无需考虑事物的存在,专心的放到系统的逻辑实现上。


        在Spring的配置文件中加入如下配置:


        

	<!-- 配置sessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 配置hibernate的配置文件 -->
		<property name="configLocation">
			<value>classpath:hibernate.cfg.xml</value>
		</property>
	</bean>

	<!-- 配置事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref bean="sessionFactory"/>
		</property>
	</bean>
	
	<!-- 配置哪些类的哪些方法使用事务 -->
	<aop:config>
		<aop:pointcut id="allManagerMethod" expression="execution(* com.lhc.usermanage.*.*(..))"/>
		<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>	
	</aop:config>
	
	<!-- 配置事务的传播特性 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED"/>
			<tx:method name="del*" propagation="REQUIRED"/>
			<tx:method name="modify*" propagation="REQUIRED"/>
			<tx:method name="*" propagation="REQUIRED" read-only="true"/>
		</tx:attributes>
	</tx:advice>


         这里,我们让Dao层的类继承HibernateDaoSupport:



 

     

        这样就可以简化CRUD操作。


        但是同时也要为UserManagerImpl配置sessionFactory属性:


        

 

   


         除了事物管理器的配置,剩下的配置跟我们使用AOP的动态代理的时候需要的配置内容差不多,主要是定义在哪切开,至于切开之后的内容,当然是加入我们的事物啦。


      脑洞大开一下,感觉这时候切入的应该是before跟After的内容。


      另外,还有个事物怎么切入的问题,这里就涉及到了事物的传播特性,比如,我以前有个事物,我再操作是直接用这个事物我还是另外开一个,and so on.......

        补充一句,这时候带大家写CRUD方法的时候,就要定义好命名规则,才能在Advice里面匹配到方法名称,才能加上事物!!!终于体会到约定大于配置了。(不知道理解的准确不?)

          

              Ps,也可以使用注解方式配置事务管理:



     又少写了好多代码大笑。。。。。。。好懒。。





         

目录
相关文章
|
18天前
|
Java 开发工具 git
实现基于Spring Cloud的配置中心
实现基于Spring Cloud的配置中心
|
16天前
|
Java 应用服务中间件 开发者
Java面试题:解释Spring Boot的优势及其自动配置原理
Java面试题:解释Spring Boot的优势及其自动配置原理
55 0
|
3天前
|
安全 Java Spring
在Spring中,如何配置Bean的初始化方法和销毁方法
在Spring中,如何配置Bean的初始化方法和销毁方法
|
9天前
|
缓存 Java 数据库连接
Spring c3p0配置详解
【7月更文挑战第13天】
|
19天前
|
JSON 运维 监控
Spring Boot中的健康检查端点配置
Spring Boot中的健康检查端点配置
|
18天前
|
JSON 运维 监控
Spring Boot中的健康检查端点配置
Spring Boot中的健康检查端点配置
|
19天前
|
存储 安全 Java
Spring Boot中的配置文件加密
Spring Boot中的配置文件加密
|
14天前
|
XML Java 关系型数据库
面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景
面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景
|
18天前
|
前端开发 Java 应用服务中间件
Spring Boot自动配置详解
Spring Boot自动配置详解
|
18天前
|
Java 数据库连接 数据库
如何在Spring Boot中集成Hibernate
如何在Spring Boot中集成Hibernate