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

Bob*_*obo 13 domain-driven-design jpa

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

Gia*_*sio 14

这实际上取决于您对域的编码方式.

通常(在Java中)我更喜欢创建一组单独的JPA注释DTO来处理持久性.此类DTO将匹配db表,并将在自定义存储库中使用

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

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

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