【发布时间】:2020-02-09 10:23:49
【问题描述】:
问题
假设以下 DDD 模型。
class Building {
Room[] rooms
addRoom(String name) {
room = new Room(name) // Model
db.create(room) // Persistence!!!
rooms.add(room) // Model
}
}
class Room {
String name
}
我们可以看到Building 是AR,负责创建它的聚合Room。我的问题是当我尝试按照 CRUD 模型在数据库中 Create Room 时。在某个时刻,可以创建一个房间,所以我的模型会调用Building,它会创建Room。但是,我的模型不应该使用持久层。
注意你可以添加房间,也就是说你可以在数据库中有一个Building与实际模型不一致。所以我也必须更新我的Building。
如果我将 Creation 的 Room 的数据库移到模型之外,那么,当我 更新 我在数据库中的 Building 时,Room必须已经存在于数据库中。但Room 是Building 的聚合子级,不应由Building 以外的类访问。
问题
如何在模型外部的数据库中创建
Room,将Room作为聚合子级?
【问题讨论】:
-
哪种编程语言?哪个版本?请添加一些标签。
-
@DJDaveMark 适用于 Java
-
这是一个使用 Spring 的示例:baeldung.com/hexagonal-architecture-ddd-spring
标签: java domain-driven-design persistence crud