gpt4 book ai didi

jpa - 是否在一种方法中调用 persist()、flush() 和 refresh() 以正确的方式持久化实体?

转载 作者:行者123 更新时间:2023-12-04 02:00:36 29 4
gpt4 key购买 nike

我的目的是在同一个业务调用中向客户端返回一个新持久化的实体,以获得进一步业务逻辑所需的生成的主键。再次调用 finder 方法以按名称或某些已知属性查找实体将导致我想避免的第二次服务器往返(时间就是金钱;-)。所以我创建了以下方法:

public Entity persist(Entity entity) {
em.persist(entity);
em.flush();
em.refresh(entity);
// now the entity has an id
return entity;
}

但现在我想知道这是否是正确的方法。不知怎的,感觉很“奇怪”。 JPA 规范对此非常清楚:EntityManager 的 persist() 方法返回 void - 对我来说听起来像是“一劳永逸”。但是我的客户依赖于主键。我的上述方法是否有替代解决方案?在我的情况下这是最佳实践吗?你怎么认为?

最佳答案

没有单一的“正确方法”……否则就是 API。您可以调用适合您的应用程序的方法以及该方法的用例。如果之后立即需要数据存储中的对象,则调用flush(),否则不需要。如果您有其他可以更新内容的进程,那么您调用 refresh() 否则您不会。等等。

关于jpa - 是否在一种方法中调用 persist()、flush() 和 refresh() 以正确的方式持久化实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7206891/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com