【问题标题】:Is it a good practice to use JPA entities as domain models?将 JPA 实体用作域模型是一种好习惯吗?
【发布时间】:2013-03-28 02:00:00
【问题描述】:

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

【问题讨论】:

    标签: jpa domain-driven-design


    【解决方案1】:

    这确实取决于您如何编码您的域。

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

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

    这种方法使域模型真正与 db 模式解耦,这样您就可以独立地发展两者。这种方法的缺点是您要编写更多代码,但我发现编写维护这样的代码非常容易且便宜。

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

    【讨论】:

    • 您是否有一个具有该实现的公共项目?
    • 使用 Hibernate 作为 JPA 提供者允许您在 XML 中映射域对象。这可以帮助您保持域对象不受 JPA 注释的影响。
    • 这正是我所做的。有道理;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    相关资源
    最近更新 更多