我从DDD开始,你可以想象我的大脑正在沸腾。
我的问题与我的域对象(实体,VO,...)有关,它代表我的域概念/逻辑以及如何持久/检索它们。
蓝皮书说,存储库是一种表示域对象集合的方式,负责与基础架构层进行通信。我在一些文章中也读到了infrastructura层,你必须使用hibernate,JPA或其他任何东西。
然后我看到这个Spring-data-jpa示例http://spring.io/guides/gs/accessing-data-jpa/,我变得疯狂。
口号说Spring-data-jpa是轻松创建存储库,之前的示例似乎将JPA注释合并到域对象(customer
)。
样品是对的吗?或者我是对的吗?
如果我是对的,域和基础设施必须分开,这意味着要存储我必须拥有的客户:
Customer
类(代表客户并具有所有逻辑操作)CustomerRepository
我的域层(从基础架构层检索或存储客户)Customer
类,可能使用@Entity CustomerReposityJPA
。感谢您的任何澄清。
答案 0 :(得分:2)
我无法看到您发布的链接,我从未将域驱动设计应用于Java世界。
从理论上讲,您需要的是Customer
在域层中的聚合。在您的域图层中,存储库的空间(用作界面),因此您将拥有ICustomerRepository
。
可能你会有四个原型来解决常见的持久性问题:
GetById(CustomerId id);
Add(Customer c);
Delete(Customer c);
Update(Customer c);
在基础设施层中,您将提供正文(例如CustomerRepository
),在infrastracture层中,您可以将自己与技术(例如JPA)结合起来。
域层必须完全不知道基础架构中使用的技术。这样做你可以完全改变实现细节(几乎没有麻烦)。