JTA和Spring @Transactional注释之间的区别

时间:2012-05-08 19:27:16

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

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

我想我的问题是,是否有任何类似的交易内容注释。我发现了一个javax jta包,但我不确定Spring是否可以实现任何通用注释。基本上我只是想知道是否存在任何类似通用javax的注释,我们可以将这些注释用于管理事务功能的方法,以便我们不依赖于Spring。

1 个答案:

答案 0 :(得分:11)

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

您可以选择将您的代码耦合到哪个API。使用Spring @Transactional的优点是,您独立于所使用的特定事务API(@Transactional可以使用JTA,JPA,Hibernate或原始JDBC事务,而无需更改代码)。但是,当然,你与春天有关。

如果注释样式是你想要的,那么除了你想完全拥抱JavaEE并使用EJB 3.x风格的注释之外,我看不到Spring的替代方案。