Hibernate如何刷新详细信息

时间:2020-08-03 13:32:28

标签: java hibernate jpa spring-data-jpa

我找不到有关Hibernate刷新方法实际上如何在后台运行的信息。我发现的信息是“刷新方法将持久性对象与底层数据库同步”,但是它的详细信息如何?
我正在通过Hibernate实现使用Java JPA。
假设我们有一个带有字段的对象User

public class User{
private Long id;
private String firstName;
private String lastName;
private String email;
private UserStatus status;
private Double longitude;
private Double latitude;
}

我们有一个方法“ A”,它是@Transactional。
首先,我们从DB中读取该对象,然后 根据他的状态,我们想用当前值更新他的坐标(longiture / latitude)。我们设置新的坐标。
帖子问题的主要部分出现了。
我所知道的是,当事务完成时,当前对象状态将被刷新并提交。但是休眠如何同步该对象?如果特定的字段值与列中的值相同,他是否会“逐字段检查”,或者如果我们在字段上使用了SETTER,他会“记住”吗?

当另一个事务方法“ B”想要更新同一用户对象的firstName时,问题很重要。
我们来看一个例子:

  1. 方法A启动并从DB中读取对象值
  2. 方法B启动并从DB中读取相同的对象
  3. 方法A更新用户firstName并结束交易
  4. 方法B更新用户coordinates并结束交易

发生了什么事?当持久性值与DB中的值不同但该方法从未触及过时,方法B是否会覆盖DB中的firstName?否则只有触摸时才会更新坐标。

0 个答案:

没有答案
相关问题