0

我即将开始我的第一个 DDD 项目,我想知道 Hibernate 可以在多大程度上处理多态性以及后果是什么。

我注意到他们在这里根本不使用抽象来表达域,即使他们的标志声明是“释放域”、“进行真正的 OO 设计”等等。这是因为他们想要一个非常简单的例子,还是因为某种原因他们不能这样做?

我知道 Hibernate 存储库不能在接口级别使用。我相信它们可以在抽象类级别使用,对吧?但是这样的场景呢:

有一个域对象A包含抽象域对象(不能是接口 :() B。有几个 B 的实现。在A中有类似“ addSomeB ”的方法。我想把B的混合子类放在那里。那么我是否能够存储此类并正确检索它?

也许有一些明显的场景,因为 Hibernate 的限制,OO 设计是不可能的?

谢谢!

4

1 回答 1

0

Hibernate 支持继承,见http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch10.html

与您相反,我必须将继承标记为框架中的一项重要功能。我们成功地持久化了一个聚合,它具有一个基类(实际上是接口),并且在扩展继承树中可能有十个不同的实现。

我知道 Hibernate 存储库不能在接口级别使用。我相信它们可以在抽象类级别使用,对吧?但是这样的场景呢:

您绝对可以在域模型中使用接口。我们做到了。我们有一个带有接口的 jar,以及更多带有实现的 jar。

显然,由于接口没有真正的值/内容,但实体本身(实现)有(因为它包含内容),您需要在映射中映射实现 - 它工作正常。您仍然可以在您的服务中使用接口,甚至在您的存储库中 - 只需在方法签名中使用它们。

于 2013-08-23T06:51:14.050 回答