Spring事务管理方案 - AOP和@Transactional

时间:2014-10-06 06:59:57

标签: spring hibernate transactions aop spring-aop

嗯,我可能在这个问题上错了,但我需要你宝贵的意见/建议才能站在正确的道路上。

我想知道{strong}良好,更好最佳方式来处理Spring + {{1}中的事务管理},Hibernate + Spring以及各自的优点和缺点。

我知道的一些方案/方法是:

1)使用AOP注释进行Spring事务管理JDBCTemplate@Aspect,其建议为@PointCut@Before@After等)。

问题 - 1 :我之前使用Spring AOP完成了一个Logging示例,但我不知道为事务管理做同样的事情。交易开始,回滚和提交是否将在该Aspect类中完成,并具有@Around@Before@After等建议?请为此分享一些代码示例/代码段。

问题 - 2 :这种方法是否强烈要求 Hibernate事务管理器,或者没有它可以实现?

2)带有@Around注释的Spring事务管理器:另一个涉及 Hibernate事务管理器的事务管理方案,用于@Transactional注释的声明式事务管理。

问题 - 3 :在方法上使用@Transactional注释可保证该方法体中的所有事务管理,但如何在Multi-DAO中以这种方式管理回滚功能在该特定方法中对不同实体的操作?比方说,你正在进行3-4种不同的DAO操作(使用@Transactional的不同DAO方法),并且在第3次DAO操作时会发生一些异常,你将如何回滚。

请分享您的观点!

此致

阿伦

1 个答案:

答案 0 :(得分:1)

认为你应该使用选项2 (例如Spring事务管理的东西),因为它已经实现并经过测试:)。关于'问题3' :这取决于您为所有"事务"选择的传播政策。 DAO API。请检查此javadoc @Transactional和'传播'部分。希望这会有所帮助。