Hibernate会话是否保存异步?

时间:2016-10-11 14:53:45

标签: java hibernate

我有一个映射到数据库表的类层次结构,比如A->B->CA拥有主键,B/C为其行引用。 我保存了C的对象。因此,Hibernate将为A创建记录,然后BC。它是否正确? (我不使用交易)。我正在使用Hibernate 3.2.6 GA

问题:这是synchronous还是asynchronous?我假设它将是同步的,所以在保存所有这些行之前它不会返回。然而,似乎即使它返回,一些表仍在更新。所以例如如果我在保存后查询C个对象,我会获得AB的状态,但C的状态为空。在任何地方都不会返回任何错误,当我手动检查数据库时,所有数据都在那里正确显示。

1 个答案:

答案 0 :(得分:1)

在这种情况下,它是同步。大多数情况下,异步行为由框架本身处理。尝试实现异步行为的开发人员可能会导致不可预测的结果。如果您没有看到更新的预期属性,请检查hibernate生成的代码和相应的sql。

此外,这里的异步意味着hibernate将更新一些实体并使用数据库一次性刷新/同步它们。它绝不意味着部分数据在不同时间得到更新。此行为将导致数据库状态不一致。