多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 大多数Spring Framework用户选择声明式事务管理。 此选项对应用程序代码的影响最小,因此最符合非侵入式轻量级容器的思想。 > 声明式事务管理是面向切面编程的,虽然事务切面代码随spring一起发版,并以模版的方式使用,但是aop的概念不了解也可以有效使用. spring的声明式事务类似ejb的cmt事务管理,支持到方法级别,有需要的话可以在事务上下文中调用`setRollbackOnly() `,两种事务的区别如下: * 不想ejb的cmt事务,依赖jta,spring的声明事务可以工作在任何环境下,全局的jta,局部的jdbc,jpa,hibernate * 任何类都可以申请声明式事务管理,而不是特殊的ejb类 * spring提供了声明式的回滚规则,ejb没有 * Spring Framework允许您使用AOP自定义事务行为。 例如,您可以在事务回滚的情况下插入自定义行为。 您还可以给事务建议再添加任意建议。 使用EJB CMT,除了setRollbackOnly()之外,您不能影响容器的事务管理。 * Spring框架不支持跨远程调用传播事务上下文,高端应用程序服务器也是如此。 如果您需要此功能,我们建议您使用EJB。 但是,在使用此类功能之前请仔细考虑,因为通常情况下,人们不希望事务跨越远程调用。 回滚规则的概念很重要:能指定那种异常自动回滚.您可以在配置中以声明方式指定此值,而不是在Java代码中。因此,尽管您仍然可以在`TransactionStatus`对象上调用`setRollbackOnly()`来回滚当前事务,但大多数情况下您可以指定规则`MyApplicationException`必须始终导致回滚。 此选项的显著优势是业务对象不依赖于事务基础结构。 例如,它们通常不需要导入Spring事务API或其他Spring API。 虽然ejb容器可以自动回滚事务当运行时异常时,但是并不能自动回滚应用异常