我发现程序员使用两种不同的方式来更新实体:
第一种方法是使服务更新方法事务化并使用 Hibernate 脏检查。这是简单的更新,User 类不包含任何惰性集合。
@Transactional
public void updateUser(Long id, String name) {
User user = userRepository.find(id);
user.update(name);
}
第二种方式使用 spring-data 中的 save 方法。
public void updateUser(Long id, String name) {
User user = userRepository.find(id);
user.update(name);
userRepository.save(user);
}
我应该使用哪种方式来进行简单的更新?
最佳答案
如果您修改了 hibernate session 已知的对象,则当 session 刷新时,hibernate 会自动保存该对象。 我建议不要这样做,因为在你的代码中你不知道你是否正在使用 hibernate 还是其他 ORM。此外,如果您修改对象时不在 session 中,则不会保存该对象。因此,请务必显式调用 save 以确保您的对象已保存。
关于java - 更新实体 - 脏检查与存储库保存方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47203672/