gpt4 book ai didi

java - UserTransaction 和 EntityTransaction 的区别

转载 作者:太空狗 更新时间:2023-10-29 22:33:51 26 4
gpt4 key购买 nike

标题说明了一切:UserTransaction 之间有什么区别?和一个 EntityTransaction

我的初步理解是 UserTransaction 在需要 JTA 时使用(例如,对多个事物进行查询),而 EntityTransaction 在仅需要 JPA 时使用(例如,当查询是原子的时)。

这是两者之间的唯一区别还是除此之外还有更多区别?

最佳答案

My rudimentary understanding is that UserTransaction is used when JTA is required (e.g. to do queries on mulitple things), and that EntityTransaction is used when JPA only is required (e.g. when the query is atomic).

基本上是对的,但是你对“多个事物”和“原子”的描述有点奇怪。 JTA 允许开发人员使用分布式事务以原子方式(全有或全无)对多个资源(数据库、JMS 代理等)执行更改。如果只访问一种资源(例如,一个数据库),则不需要 JTA,但事务仍然是原子的(全有或全无)。例如,当您在一个数据库上使用常规 JDBC 事务时就是这种情况。

考虑 UserTransactionEntityTransaction:

  • 如果 JPA 是独立使用的,您可以使用 EntityTransaction 来自己划分事务。
  • 如果在与 JTA 集成的托管环境中使用 JPA,则使用 UserTransactionEntityManager 将自身 Hook 到 JTA 分布式事务管理器中。我所知道的唯一微妙之处在于变化的齐平。使用 EntityTransaction 时,JPA 知道它需要刷新更改。如果使用 UserTransaction 控制事务,则需要使用 JTA 注册回调 registerSynchronization ,以便在事务完成之前将更改刷新到数据库。如果您将 EJB 与 CMT(容器管理的事务)一起使用,您甚至不需要使用 UserTransaction:应用服务器会为您启动和停止事务。

相关问题:

关于java - UserTransaction 和 EntityTransaction 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com