【发布时间】:2012-06-27 08:22:50
【问题描述】:
我们应该在 Spring 中使用哪种类型的事务管理策略? 声明式还是程序式? 哪个更好,在什么情况下应该使用它? 你能给出任何适当的例子或教程吗?
还想知道spring写数据库代码的时候最新的东西是什么? HibernateTemplate 的替代方案是什么?
【问题讨论】:
标签: spring
我们应该在 Spring 中使用哪种类型的事务管理策略? 声明式还是程序式? 哪个更好,在什么情况下应该使用它? 你能给出任何适当的例子或教程吗?
还想知道spring写数据库代码的时候最新的东西是什么? HibernateTemplate 的替代方案是什么?
【问题讨论】:
标签: spring
程序化交易管理
声明式事务管理
【讨论】:
它们并不相互排斥。
在大多数情况下,您可以使用 decalrative 事务管理 (@Transactional),当您遇到 Spring AOP 的限制(请参阅 11.5.1 Understanding the Spring Framework's declarative transaction implementation)或需要在更复杂的方法。
【讨论】:
TransactionTemplates(例如在异步代码中)。
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
http://docs.spring.io/spring/docs/3.0.x/reference/transaction.html
声明式事务管理允许从 Java 代码中消除对事务框架的任何依赖。提供事务支持的四个参与者是事务管理器、代理工厂、事务拦截器和一组事务属性。
建议使用声明式事务管理,HibernateTemplates 的替代方法是 NamedJDBCTemplate 或 simpleJDBCTemplate
【讨论】:
和
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html
一般。
例子:
http://www.springbyexample.org/examples/hibernate-transaction-annotation-config.html
新功能:我建议将 DI 与 SessionFactory 一起使用。还可以看看 3.1 的新特性:Hibernate 4 support。见http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/new-in-3.1.html#d0e1385
【讨论】:
仅当您有少量事务操作时,程序化事务管理通常是一个好主意。例如,如果您的 Web 应用程序只需要某些更新操作的事务,您可能不想使用 Spring 或任何其他技术设置事务代理。在这种情况下,使用 TransactionTemplate 可能是一个好方法。能够显式设置事务名称也只能使用事务管理的编程方法来完成。
另一方面,如果您的应用程序有大量事务操作,则声明式事务管理通常是值得的。它将事务管理排除在业务逻辑之外,并且不难配置。
【讨论】:
Spring 支持两种类型的事务管理:
1.程序化事务管理: 事务在编程的帮助下进行管理,提供了极大的灵活性,但难以维护。
2。声明式事务管理:事务管理与业务代码分离,仅使用注释或基于 XML 的配置来管理事务。
【讨论】: