spring、hibernate整合3(事务)
声明式事务管理的配置方式通常有如下四种。
?使用TransactionProxyFactoryBean 为目标bean 生成事务代理的配置。此方式最传统,但配置文件膝肿,难以阅读。
?采用bean 继承的事务代理配置方式比较简沽,但依然是增量式配置。
?使用BeanNameAutoProxyCreator ,根据bean name 自动生成事务代理的方式,这是直接利用Spring 的AOP 框架配置事务代理的方式,需要对Spring 的AOP 框架有所理解,但这种方式避免了增量式配置,效果非常不错。
? DefaultAdvisorAutoProxyCreator: 这也是直接利用Spring 的AOP 框架配置事务代理的方式,效果也非常不错,只是这种配置方式的可读性不如第三种方式。
?
?
?
1、TransactionProxyFactoryBean
?目标bean 直接暴露在Spring 容器中,可以直接引用,如果目标bean 被误引用,将导致业务操作不具备事务性。为了避免这种现象,可将目标bean 配置成嵌套bean , 的配置代码:
?2、采用bean 继承
?3、BeanNameAutoProxyCreator拦截器
?4、用DefaultAdvisorAutoProxyCreator自动创建事务代理
??
?
?
?
总结:
(1)Transaction ProxyFactoryBean最原始,事务代理的配置依然是增量式的,每个事务代理都需要单独配置。
(2)Transaction ProxyFactoryBean使用继承后简化了配置,事务代理的配置依然是增量式的,每个事务代理都需要单独配置。
(3)BeanNameAutoProxyCreator 自动创建事务代理,可避免增量式配置,者使用事务拦截器创建代,一种直观。
(4)DefaultAdvisorAutoProxyCreator自动创建事务代理,可避免增量式配置,使用Advisor 创建事务代理,更加简洁。
推荐使用BeanNameAutoProxyCreator 自动创建事务代理或者DefaultAdvisorAutoProxyCreator自动创建事务代理。
?
?