java - 更新实体 - 脏检查与存储库保存方法

标签 java spring-mvc spring-data-jpa

我发现程序员使用两种不同的方式来更新实体:

第一种方法是使服务更新方法事务化并使用 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/

相关文章:

java - Spring Boot应用程序(特定于配置文件).properties返回null

java - 如何使用 Spring MVC 从 POST 请求返回 XML 响应?

mysql - 带有可选参数的 JpaRepository

java - Selenium 使用 JavascriptExecutor 等待页面完全加载

java - 一个乐谱软件中JPanel添加Graphics的正确方法

java - 如何在 Spring MVC 应用程序中从 Apache Axis Web 服务调用方法?

java - Spring Pageable 不翻译@Column 名称

java - 如何在 Spring Data 中使用自定义数据库方言?

java - 如何贡献 Action 与 Eclipse 中的菜单进行比较

java - 命名谓词