业务层面的延迟加载

Lazy loading at the business level

在我的 Java 应用程序中,我试图尽可能严格地将业务模型和持久性模型分开。所以我有一组持久性级别的实体,由 Hibernate + Spring Data 提供支持,具有关系、级联、延迟加载和其他功能。 但是后来我有了一个业务模型,作为一组不同的实体,它们以某种方式映射到持久性实体上。

只要 Hibernate 不知道这个级别,那里就没有延迟加载。 我该怎么做?是否有解决方案或 common/better 实践来实现延迟加载而不在业务级别存储外部密钥(和其他持久性内容)?

我的目标是使业务和持久性之间的 link 尽可能柔和。我明白,一旦我转向实体关系和一些从业务级别开始的数据库加载,这些级别就会相互绑定。但是有什么方法可以最小化依赖性吗?

P.S。我确实需要以任何可能的方式进行延迟加载。

最好将您的域拆分为两个单独的 Bounded Contexts。这意味着您将无法直接引用非延迟加载域中的延迟加载上下文。您将不得不退出服务层以引用它。如果延迟加载的信息检索成本如此之高,这可能就是您正在寻找的模式。

这将在相当高的水平上驱动您的应用程序设计,因此请准备好进行重构以使其正常工作。