gpt4 book ai didi

java - 在扩展持久性上下文中管理实体的 JPA 最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:13 25 4
gpt4 key购买 nike

我正在使用 CDI session 范围的、Seam 管理的扩展持久性上下文 (PC)。这提供了对 PC 的更细粒度控制并避免了 LIE。我正在使用 CDI Beans 而不是 EJB Beans。在页面中,我检索实体列表并将它们显示在表格中。从表中选择的实体记录绑定(bind)到表单,可以编辑,但在单击“保存”按钮之前不会持久保存。在这个地方出现了问题,因为所有实体都是管理的,所以当我尝试在保存操作中仅刷新/提交一个当前实体时,编辑的实体也会保留。解决此类问题的首选最佳实践方法是什么。我应该在托管实体和查看/编辑的实体之间使用中间 POJO 吗?我应该分离然后合并(在保存之前)当前正在进行的实体吗?有什么建议么?

JPA 2.0、 hibernate 4.x
Seam 3 (Weld CDI, persistence, transaction, faces modules)
JSF 2.1
Java EE 6。

最佳答案

我们使用了类似的方法,但是使用了 EJB3 bean 并且没有 Seam 持久性上下文。不过,也许我们的经验对您有用。

当时的想法是:

  • 在 bean 中使用 extended PersistenceContext
  • 使所有方法都没有事务 - 否则您的实体将在调用后提交
  • 使保存方法成为带有事务的方法。

分离实体会破坏将实体置于前端的好处,因为每次您尝试访问未加载的内容时都会抛出 LazyException。这与使用一些 DTO 完全相同。

希望对您有所帮助!

关于java - 在扩展持久性上下文中管理实体的 JPA 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275123/

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