我已经看到程序员使用两种不同的方式来更新实体:
第一种方法是使服务更新方法具有事务性并使用hibernate脏检查。这是简单的更新,User类不包含任何惰性集合。
@Transactional
public void updateUser(Long id, String name) {
User user = userRepository.find(id);
user.update(name);
}
第二种方式使用方法保存spring-data。
public void updateUser(Long id, String name) {
User user = userRepository.find(id);
user.update(name);
userRepository.save(user);
}
我应该使用哪种方式进行简单更新?
答案 0 :(得分:1)
如果修改了hibernate会话已知的对象,则在刷新会话时,它将自动由hibernate保存。 我建议不要这样做,因为在你的代码中,你不知道你是在使用hibernate还是其他ORM。此外,如果在修改对象时对象不在会话中,则不会保存该对象。所以总是明确地调用save来确保你的对象被保存。