请解释 Spring 框架中的事务管理是什么,并说明其核心机制与实现方式。
考察说明
考查对Spring事务管理概念、机制及声明式与编程式两种实现方式的理解。
回答思路
- 【回答框架 1】事务管理是一组保证数据库操作原子性、一致性、隔离性和持久性的机制,Spring通过统一抽象接口PlatformTransactionManager屏蔽底层差异,支持JDBC、JPA、Hibernate等。
- 【回答框架 2】核心是事务管理器与事务定义,事务定义包含隔离级别、传播行为、超时和只读属性,传播行为如REQUIRED支持嵌套调用合并事务,REQUIRES_NEW则挂起当前事务并新建。
- 【回答框架 3】实现分为编程式事务管理,通过TransactionTemplate或PlatformTransactionManager手动控制提交回滚,灵活但代码侵入;声明式事务基于AOP,通过@Transactional注解或XML配置,非侵入式且推荐使用。
- 【回答框架 4】事务生效依赖于代理机制,默认通过Spring AOP代理,所以自调用或私有方法会导致代理失效,需注意正确使用public方法和通过代理对象调用。
- 【关键点 1】Spring事务管理提供统一抽象,核心接口为PlatformTransactionManager。
- 【关键点 2】事务传播行为决定方法间事务边界,REQUIRED为默认,REQUIRES_NEW创建新事务。
- 【关键点 3】声明式事务基于AOP,@Transactional注解简化配置,但需注意代理失效场景。
- 【关键点 4】编程式事务使用TransactionTemplate,适合需要细粒度控制的场景。
- 【关键点 5】事务配置包括隔离级别、超时和只读属性,需与数据库特性配合。
- 【易错点 1】自调用或非public方法不经过代理,导致事务注解失效。
- 【易错点 2】事务传播行为选择不当,例如REQUIRES_NEW在长事务中可能造成锁竞争。
- 【易错点 3】仅依赖事务无法保证幂等,还需唯一约束或状态记录。