【发布时间】:2016-11-29 14:05:43
【问题描述】:
我正在开发一个使用 Spring Data JPA 访问数据层的 Spring 应用程序。
所以基本上我有 n 个实体类 和 n 个相关的存储库类 来访问与实体类关联的数据库表的数据,如下所示:
@Repository
@Transactional(propagation = Propagation.MANDATORY)
public interface EntityType1DAO extends JpaRepository<EntityType1, Long> {
//@Query("FROM Room WHERE accomodation = :id")
List<EntityType1> findByEntityType1(EntityType1 entityType1);
}
@Repository
@Transactional(propagation = Propagation.MANDATORY)
public interface EntityType2DAO extends JpaRepository<EntityType2, Long> {
List<EntityType2> findByEntityType2(EntityType2 entityType2);
}
...........................................................................
...........................................................................
...........................................................................
@Repository
@Transactional(propagation = Propagation.MANDATORY)
public interface EntityTypeNDAO extends JpaRepository<EntityTypeN, Long> {
List<EntityTypeN> findByEntityTypeN(EntityTypeN entityTypeN);
}
所以基本上以这种方式,我有 n 个域类被 **n 个存储库类访问。
我可以将这 n 个领域类划分为属于一个共同概念的子集。
例如,我可以拥有所有属于的实体类,例如:Room、RoomTipology RoomRate 和 RoomPicture 房间概念。
所以我将有以下服务类:RoomDAO、RoomTipologyDAO、RoomRateDAO 和 RoomPictureDAO。 p>
它工作正常,但我想采用更多域驱动设计架构。
所以我发现了这篇关于如何在 Spring 应用程序中获得 DOMAIN-DRIVEN DESIGN 的有趣文章:http://static.olivergierke.de/lectures/ddd-and-spring/
阅读上一篇文章是这样说的:
Repository - Spring 组件,通常是 Spring Data 存储库 界面。可以依赖于实体和值对象,居中 围绕作为聚合根的实体。
具体是什么意思?这意味着我可以创建一个 聚合根 类(例如 RoomAggregation 将我的 Room、RoomTipology 聚合在一起strong>RoomRate 和 RoomPicture 实体类)使用 @Embedded 注释。
或者什么?
在我的应用程序中使用 Spring Data JPA 获得 DOMAIN-DRIVEN DESIGN 的良好架构解决方案是什么?
【问题讨论】:
-
你读过其他关于 DDD 的东西吗?将整个架构转变基于一篇非常简洁的文章中包含的知识可能不是最好的主意。
标签: java spring spring-data domain-driven-design spring-data-jpa