Spring的宣言式事务配置小结
Spring的声明式事务配置小结
我们在Spring中可以使用声明式事务
对于声明式事务,我们在程序中只要使用@Transactional标签就可以了,但是在配置文件中,我们应该怎么设置呢
事务的配置要设置三个东西,datasource, TransactionManager和代理机制
datasource就是配置像hibernate等一系列数据库配置
TransactionManager就是对应数据源的管理器,如Hibernate对应着HibernateTransactionManager
代理机制在声明式中就是可以这么一句话
<tx:annotation-driven transaction-manager="transactionManager"/>
如果没有datasource,那么就连接不上数据库
没有TransactionManager那么就不能使用事务
没有代理机制,那么事务就不会提交
因为用了事务,那么就是用了代理,Spring会用代理来调用事务类
代理是面向接口的,如果你的事务类没有继承接口的话,就可能会出java.lang.ClassCastException: $Proxy6 cannot be cast to 错,这时候就要把调用的类改成上级的接口类,而不能是实现类
我们在Spring中可以使用声明式事务
对于声明式事务,我们在程序中只要使用@Transactional标签就可以了,但是在配置文件中,我们应该怎么设置呢
事务的配置要设置三个东西,datasource, TransactionManager和代理机制
datasource就是配置像hibernate等一系列数据库配置
TransactionManager就是对应数据源的管理器,如Hibernate对应着HibernateTransactionManager
代理机制在声明式中就是可以这么一句话
<tx:annotation-driven transaction-manager="transactionManager"/>
如果没有datasource,那么就连接不上数据库
没有TransactionManager那么就不能使用事务
没有代理机制,那么事务就不会提交
因为用了事务,那么就是用了代理,Spring会用代理来调用事务类
代理是面向接口的,如果你的事务类没有继承接口的话,就可能会出java.lang.ClassCastException: $Proxy6 cannot be cast to 错,这时候就要把调用的类改成上级的接口类,而不能是实现类