Spring中的声明性或程序化事务

Ric*_*vis 9 spring

我们应该在Spring中使用什么类型的事务管理策略?声明性还是程序化?哪个更好,在什么情况下应该使用它?你能给出任何适当的例子或教程吗?

还想知道在Spring编写数据库代码时我们应该使用的最新内容是什么?HibernateTemplate的替代方案是什么?

Ram*_*asi 13

程序化交易管理

  1. 允许您通过源代码中的编程来管理事务.
  2. 这意味着在您的业务逻辑之间硬编码事务逻辑.
  3. 您使用编程来管理事务
  4. 灵活,但难以维护大量的业务逻辑.在业务逻辑之间引入样板.
  5. 当引入相对较少的事务逻辑时优选.

声明性交易管理

  1. 允许您通过配置管理事务.
  2. 这意味着事务逻辑与业务逻辑分离.
  3. 您可以使用注释(或XML文件)来管理事务.
  4. 易于维护.Boilerplate远离业务逻辑.
  5. 使用大量事务逻辑时首选.


kap*_*das 6

Spring提供程序化和声明式事务.

程序化意味着您拥有围绕业务代码的事务管理代码.这提供了极大的灵活性,但难以维护,而且很难用.

声明意味着您将事务管理与业务代码分开.您可以使用注释或基于XML的配置.

programmatic management is more flexible during development time but less flexible during application life
declarative management is less flexible during development time but more flexible during application life
Run Code Online (Sandbox Code Playgroud)

http://docs.spring.io/spring/docs/3.0.x/reference/transaction.html

声明式事务管理允许从Java代码中消除对事务框架的任何依赖性.提供事务支持的四个参与者是事务管理器,代理工厂,事务拦截器和一组事务属性.

建议使用声明式事务管理,替代HibernateTemplates NamedJDBCTemplate或simpleJDBCTemplate


axt*_*avt 5

它们不是相互排斥的.

您可以@Transactional在大多数情况下使用decalrative transaction management(),TransactionTemplate当您遇到Spring AOP的限制(参见11.5.1了解Spring Framework的声明式事务实现)或需要控制更复杂的事务时,可以回退到编程事务管理()方法.