jakarta-ee - JTA和Spring @Transactional批注之间的区别

标签 jakarta-ee transactions annotations jta spring-transactions

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

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

最佳答案

我不认为JavaEE 6提供像Spring那样的事务划分注释。我认为,最接近的类比是使用EJB无状态 session Bean,它本质上是事务性的,但没有这样明确地标出(如果我错了,请纠正我)。

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

如果您想要的是注释样式,那么除非您希望完全拥抱JavaEE并使用EJB 3.x样式的注释,否则我看不到Spring的替代品。

关于jakarta-ee - JTA和Spring @Transactional批注之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505160/

相关文章:

java - 合并使用 1 :* relationships into one query 的三个查询

java - 获取Tomcat中http端口对应的https端口号

java - Spring Bean 注解名称属性的用途是什么?

java - 遗留代码的集成测试中如何处理事务

mysql - 长时间运行的事务将如何影响自动提交应用程序?

python - 自定义数据集的 ImageDataGenerator 的替代方案

spring - 如何确保<上下文:annotation-config/> is set in classes depending on it?

java - 如何在 Java EE 中以编程方式添加多个 servlet

java - Glassfish 安全 : Role changes should take effect immediately

spring - 为什么事务会在 RuntimeException 而不是 SQLException 上回滚