【发布时间】:2015-02-14 08:52:42
【问题描述】:
虽然我在将 JPA 应用到 Web 应用程序方面经验丰富,但我现在在将它应用到桌面应用程序方面面临挑战。我可以使用一些指针!
我正在研究基于 JavaFX 的解决方案,但我遇到了延迟加载实体关系的问题。我所追求的用户界面相当简单。一方面,有一个实体列表。单击列表中的其中一个会导致实体详细信息显示在屏幕的另一侧。
显示列表所需的所有信息都是通过 JPA 实体的非延迟加载属性获得的。但是,要显示详细信息(单击后),需要检索相当多的关联实体。鉴于数据量,预先(急切地)将所有数据加载到内存中是不可行的,所以我希望关联的实体被延迟加载。
这是我遇到 JPA 会话管理问题的地方。我还没有想出一种结构化的方式来让会话处于活动状态,可以用来延迟加载关系。
在基于 Web 的环境中,会话范围通常很容易定义。通常,HTTP 请求本身可用于定义会话的生命周期。 HTTP 请求形成了用户交互的非常清晰的起点和终点。您如何在非 Web 应用程序中执行此操作?
【问题讨论】:
-
为什么不使用 JPA 查询而不是延迟加载?此外,如果您的用户开始到处点击,无论如何您最终都会加载所有数据 - 无法垃圾收集?
-
我的建议是不要在桌面应用上使用 jpa
标签: java jpa orm javafx desktop-application