当前位置: 首页 > 知识库问答 >
问题:

在Hibernate中加入事务

闾丘成双
2023-03-14

我正在将代码从EJB迁移到Spring-Hibernate。如果发生故障,如何加入事务并回滚?下面是EJB中的代码:

entityManager.joinTransaction();
entityManager.persist(xyz);
entityManager.flush();

更新1:我们如何连接发生在不同数据库上的两个事务?有2个事务需要原子地执行。如果第二个事务失败,则必须回滚第一个事务。对此如何落实?

共有1个答案

鲁炳
2023-03-14

EntityManager.joinTransaction();的目的是通知持久性上下文将自身与当前事务(引用)同步

由于代码正在迁移到Spring,请考虑通过@transactional使用开箱即用的事务抽象。这将使对jointransaction()的调用变得多余,回滚/提交将由Spring负责。

注意-确保事务设置的选择是适当的,以便与当前的实现相一致。

 类似资料:
  • 问题内容: 在这种情况下,能否使休眠状态以“正确”的某个值来执行“正确的事情”? 问题是prop是联接表中具有不同表示形式的UserType。在表A中,它表示为整数,在表B中,它表示为char。因此,eq测试转换为看是否1 ==’a’或多或少,这是错误的,但由1或’a’表示的对象应该相同,因此它们应该比较为true。 问题答案: 我认为您可以使用映射文件中关系上的标记来执行此操作。 例如: 我用它

  • 我有一个hibernate映射问题。我有以下两个DB表(不允许我更改DB): 我试图为这些DB表创建实体,但不知道如何映射表之间的连接。以下是我的尝试(但它是错误的): 可嵌入类 嵌入使用 困难在于我想在一个列和embeddedId列的一部分之间建立一个单一的连接。对这个问题有什么想法吗?(我正在使用Hibernate4.0.1)

  • 我正在编写一个示例java控制台应用程序,它在hibernate中写入数据。所有hibernate配置都已完成。以下是项目的类结构: 如您所见,一个DBUser只能有一个DBUserDetail,而一个DBUserDetail只能有一个DBUser。假设在一个超文本传输协议请求中,用户同时输入新的DBUser和DBUserDetail数据。所以我想在一个交易中添加这两个信息。下面是我的解决方案:

  • 在以下代码中: 无论我是否注释/取消注释事务,它们都工作正常,即没有事务也保存操作成功执行。但是当我检查留档时,他们总是在插入更新删除之前使用事务。有什么具体原因吗?我错过了什么吗? 请告诉我这件事。我相当困惑:( 当做

  • 假设我有一个服务方法,我在其中执行一些验证/REST调用等(例如,中的someServiceMethod2),并希望以事务方式使其安全。我还有一个repoMethod,它包含一个事务。当父事务引发异常时,如何回滚子事务? 有没有办法在一个事务中加入这两种方法?就像< code>TransactionDefinition。PROPAGATION _ REQUIRED PROPAGATION将在Spr

  • 我在Hibernate中看到了以下属性。cfg。一个企业(EJB)应用程序中的xml。我不知道这到底意味着什么。 我在代码中没有找到任何与事务相关的东西,比如begin transaction或commit,相反,我只看到sessionFactory。openSession()和会话。flush()。如果启用了上述配置,如何管理事务。