模块化应用程序的设计模式(如何重用实体)

Design pattern for modular application (how to reuse entities)

我有以下场景:

  1. 负责业务逻辑和数据库交互的 JAX-RS Web 服务。
  2. 最终用户将使用的网络应用程序。
  3. 管理员将使用的网络应用程序。

我的问题是我想在其他应用程序上重用 web 服务中的实体,但它被 JPA、JAX-RS、CDI 等框架高度包裹......所以我很难是时候隔离他们了。我想知道最好的解决方法以及为什么我应该使用它而不是其他方法。

将您的实体对象编写为普通旧 Java 对象 (POJO),具有适当的构造函数、setter 等。应用允许 JPA 持久化它们的注释,并以这样的方式进行对象到关系的映射这样一来,如果这些注释都被剥离,您仍然可以使用 class 的 public 方法完全创建和操作这些对象。如果您先创建 POJO,然后再添加注释,这会很有帮助。

由于 POJO 是独立的,因此它们根本不是存储库层的一部分。您完全可以在不使用 JPA 的情况下使用它们。

也许DTO is the way to go (with support from some object mapper library like Dozer)

请查看以下文章了解更多详情:http://zezutom.blogspot.com/2012/02/thoughts-on-data-transfer-objects.html