2016-04-15 42 views
1

从DDD中读取了一些页面后,我阅读了Repository模式,然后成功地在应用程序中使用了它(我真的很喜欢它)。然后我注意到EntityManagergeneric-repository-like,但是当我在阅读有关存储库,我看到网络上的许多例子,说明如何impliment Repository模式和JPA是许多实现之间的一个简单的仓库实现,像这样的网站:http://www.lestard.eu/2015/generic_repository_part1/将JPA扩展到WebServices

的开发人员演示了Repository模式在内存中的实现,并在第二部分:http://www.lestard.eu/2015/generic_repository_part2/中显示了JPA实现存储库模式。我们可以扩展JPA以使用内存中,Web服务(例如:REST CRUD)和实体持久化 - 作为JPA代表Java PERSISITENCE API,(())和实体持久化我用大写字母来表明它意味着一种通用的持久性机制) - 因为目前的JPA似乎与数据库紧密结合,但其名称指的是一般用途。

回答

1

从技术上讲,这是可能的,但我不希望这样做,也没有任何指向特定实现标准(如Java JPA)的链接。我倾向于隐藏我的Repository impl中的所有实现细节。

而且,我绝对不喜欢主意,把任何持续性(如@Entity)或转换(比如从JAXB @XmlRootElement@JsonProperty)注解我的域对象中。

原因很简单:如果将来您会将Java JPA更改为像这样的新Java新JPA您必须为此更改您的域对象。但它与整个DDD理念相矛盾。

+0

您可以在映射的对象和域对象之间做出区别。 –

+1

@LaVloZMerrill当然。实际上,我有'SettlementMessageEntity'类用于持久化(带有注释,一些附加的'id'字段等)和'SettlementMessage'作为一个域对象。但是,这是另一个问题:从实体转换为DDO,反之亦然。 –

+0

它更符合该项目:/ –