我们应该在 Spring 中使用哪种类型的事务管理策略?声明式还是程序式?哪个更好,在什么情况下应该使用它?你能给出任何适当的例子或教程吗?
还想知道春季写数据库代码时我们应该使用的最新的东西是什么?HibernateTemplate 的替代方案是什么?
我们应该在 Spring 中使用哪种类型的事务管理策略?声明式还是程序式?哪个更好,在什么情况下应该使用它?你能给出任何适当的例子或教程吗?
还想知道春季写数据库代码时我们应该使用的最新的东西是什么?HibernateTemplate 的替代方案是什么?
程序化事务管理
声明式事务管理
它们不是相互排斥的。
@Transactional
在大多数情况下,您可以使用声明式事务管理TransactionTemplate
(方法。
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 代码中消除对事务框架的任何依赖。提供事务支持的四个参与者是事务管理器、代理工厂、事务拦截器和一组事务属性。
建议使用声明式事务管理,HibernateTemplate 的替代方案 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 的配置来管理事务。