我找不到有关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
时,问题很重要。
我们来看一个例子:
firstName
并结束交易coordinates
并结束交易发生了什么事?当持久性值与DB中的值不同但该方法从未触及过时,方法B是否会覆盖DB中的firstName?否则只有触摸时才会更新坐标。