【问题标题】:The spring data JPA repository.save method automatically saves all entities?spring data JPA repository.save 方法自动保存所有实体?
【发布时间】:2021-11-09 06:20:18
【问题描述】:

在下面的代码中,为什么将user1保存到数据库中? repository.save 方法自动保存所有实体?

@RestController
@RequestMapping("/test")
public class Test {

    @Autowired
    private UserRepository userRepository;

    @PostMapping("/test")
    public void test() {
        User user1 = userRepository.findById(1);
        user1.setPhone("1");

        User user2 = userRepository.findById(2);
        userRepository.save(user2);
    }
}

【问题讨论】:

    标签: java spring database jpa spring-data-jpa


    【解决方案1】:

    存储库不保存实体;相反,JPA 是一个“神奇”系统,其中对持久实体的更改会在事务提交时自动保存。使用其他持久性技术的存储库确实需要对每个对象进行显式保存操作。

    【讨论】:

      【解决方案2】:

      基本上,这取决于您的事务边界,如果您有一个活动的非只读事务并且您正在对托管(附加)实体进行一些修改,那么一旦提交事务,所有更改都将被保存/持久化。 这是 JPA/Hibernate 的基本原理。 如果不需要更改,则不应修改理想的附加实体。

      【讨论】:

        猜你喜欢
        • 2019-09-30
        • 2018-05-01
        • 2013-05-09
        • 1970-01-01
        • 2016-09-03
        • 2012-07-19
        • 2019-10-01
        • 1970-01-01
        • 2017-05-06
        相关资源
        最近更新 更多