【问题标题】:Difference between JTA and Spring @Transactional annotationsJTA 和 Spring @Transactional 注解的区别
【发布时间】:2012-05-17 07:45:24
【问题描述】:

我已经开始使用Spring的@Transactional注解了,它为管理事务提供了很多便利。然而,在我们的代码中使用这个注解现在使我们依赖于 Spring。我知道对于 JPA 类型的东西,有一个 javax persistence 包,我们可以在其中使用各种 JPA 注释来标记代码,但是由于它们都来自 javax.persistence,因此我们的代码不依赖于任何特定的实现或 ORM。

我想我的问题是是否有任何类似的事务性注释。我找到了一个 javax jta 包,但我不确定 Spring 是否真的可以实现任何通用注释。基本上我只是想知道是否有任何类型的通用 javax 类注释,我们可以将它们放在管理事务功能的方法上,以便我们不依赖于 Spring。

【问题讨论】:

  • 您使用的是哪个版本的 JavaEE?
  • @skaffman Java 7 是首选,但 Java 6 也可以。
  • 我说的是JavaEE版本,不是JavaSE版本。您的问题涉及高度依赖于版本的 JavaEE API 部分。
  • @skaffman 哦,我们没有使用 JavaEE。也许我遗漏了一些东西......我们正在使用 Tomcat 6,希望将来迁移到 Tomcat 7。 JTA 包是否仅适用于 JavaEE?
  • JTA 和 JPA 是 JavaEE 的一部分,servlet 和 JSP 也是如此。

标签: jakarta-ee transactions annotations jta spring-transactions


【解决方案1】:

我认为 JavaEE 6 不像 Spring 那样提供事务分界注释。我认为最接近的类似物是使用 EJB 无状态会话 bean,它们本质上是事务性的,但没有明确划分(如果我错了,请有人纠正我)。

您可以自行决定选择将代码耦合到哪些 API。使用 Spring 的 @Transactional 的优点是您独立于正在使用的特定事务 API(@Transactional 可以与 JTA、JPA、Hibernate 或原始 JDBC 事务一起使用,而无需更改代码)。但是,当然,您与 Spring 相关联。

如果注释样式是您想要的,那么我认为除了 Spring 之外别无选择,除非您想完全接受 JavaEE 并使用 EJB 3.x 样式的注释。

【讨论】:

    猜你喜欢
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2014-10-04
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多