相关疑难解决方法(0)

聚合到 JPA 实体映射

在我参与的一个DDD项目中,我们正在寻找一些方便的解决方案来映射entity objectsdomain objects反之亦然。

该项目的开发人员同意将领域模型与数据模型完全解耦。数据层使用JPA (Hibernate)持久化技术。

正如我们都认为持久性是 DDD 中的一个实现细节,从开发人员的角度来看,我们都在应用程序的各个方面寻找最合适的解决方案。

我们最关心的是aggregate,包含 列表的何时entities映射到JPA entity包含one-to-many关系的 。

看一下下面的例子:

领域模型

public class Product extends Aggregate {
    private ProductId productId;
    private Set<ProductBacklogItem> backlogItems;

    // constructor & methods omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

public class ProductBacklogItem extends DomainEntity {
    private BacklogItemId backlogItemId;
    private int ordering;
    private ProductId productId;

    // constructor & methods omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

数据模型

public class ProductJpaEntity { …
Run Code Online (Sandbox Code Playgroud)

java domain-driven-design jpa ddd-repositories

7
推荐指数
1
解决办法
3739
查看次数

JPA实体和DDD实体应该属于同一类吗?

根据DDD,有些类是实体,有些类具有@javax.persistence.Entity注释。他们应该是同一班吗?还是JPA实体应仅充当映射器(https://martinfowler.com/eaaCatalog/dataMapper.html)从数据库加载DDD实体(并将其存储)并保留在域模型之外的机制?

如果将数据库元数据分离并存储在外部(例如,以XML格式),会有所不同吗?如果此类是实体,边界在哪里?我认为从XSD(例如,使用JAXB)甚至使用MyBatis Generator从数据库生成的类都不是DDD中所理解的实体。

orm domain-driven-design jpa mybatis mybatis-generator

6
推荐指数
1
解决办法
980
查看次数