Spring提供的Hibernate申明式事务管理有两种办法

阅读更多

Spring提供的Hibernate申明式事务管理有两种办法

a) 配合使用org.springframework.transaction.interceptor.TransactionInterceptor和org.springframework.orm.hibernate.HibernateTransactionManager,下面是spring reference的例子

代码:

        ...
                    class="org.springframework.orm.hibernate.HibernateTransactionManager">
           
           
           

       

                        class="org.springframework.transaction.interceptor.TransactionInterceptor">
           
               
           

           
               
                    product.ProductService.increasePrice*=PROPAGATION_REQUIRED
                    product.ProductService.someOtherBusinessMethod=PROPAGATION_MANDATORY
               

           

       

       
           
               
           

       

       
           
                product.ProductService
           

           
               
           

           
               
                myTransactionInterceptor
               

           

       

   


HibernateInterceptor和事务无关,它的用途在javadocs中描述如下:
引用:
This interceptor binds a new Hibernate Session to the thread before a method
call, closing and removing it afterwards in case of any method outcome.
If there already was a pre-bound Session (e.g. from HibernateTransactionManager,
or from a surrounding Hibernate-intercepted method), the interceptor simply
takes part in it.


b)使用TransactionProxyFactoryBean,下面是Spring Reference中的例子
代码:

   
        ...
                    class="org.springframework.orm.hibernate.HibernateTransactionManager">
           
               
           

       

       
           
               
           

       

                    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
           
               
           

           
               
           

           
               
                    PROPAGATION_REQUIRED
                    PROPAGATION_MANDATORY
               

           

       

   

   


在没有其他AOP interceptor情况下,使用TransactionProxyFactoryBean是比较方便的。
事务划分一般是的业务层,而不是在DAO一层。

2.代理工厂返回的是接口AddressDao的应用,通过接口最终调用target的方法。
3.TransactionDefinition定义了所有的事务属性



你可能感兴趣的:(Hibernate,Spring,Bean,AOP,ORM)