将JPA实体用作域模型是一种好习惯吗?

时间:2013-04-05 15:18:39

标签: jpa domain-driven-design

或者创建一个由域模型组成的域层,并与JPA实体交谈以进行数据库访问? 两种方法的优缺点是什么?谢谢!

1 个答案:

答案 0 :(得分:14)

这实际上取决于您对域名进行编码的方式。

一般情况下(在Java中)我更喜欢创建一组单独的JPA带注释的DTO来处理持久性。此类DTO将匹配db表,并将在

的自定义存储库中使用
  • 将向客户端公开语义API
  • 将针对此类DTO运行查询
  • 将使用工厂初始化域对象以返回客户端

这种方法使域模型真正与db模式分离,以便您可以独立地进化。这种方法的缺点是你有更多的代码要编写,但我发现这样的代码编写维护非常简单和便宜。

在实体上使用JPA注释是一种非常常见的方法,但随着您的域模型的发展变得越来越复杂,我自己的经验是您必须面对比其他解决方案更昂贵的问题。