DDD и хранение сложного объекта Value в БД с использованием Hibernate

В примере проекта DDD, написанном Эриком Эвансом ( http://dddcommunity.org/examples), есть класс Cargo, который является объектом сущности и сопоставляется с таблицей БД с помощью hibernate. Этот объект домена Cargo состоит из нескольких объектов стоимости, одним из которых является Delivery. Этот объект Значения доставки довольно сложен, так как имеет около 10 полей. Тем не менее, Delivery - это плоский объект, поэтому он идеально подходит для хранения в БД в той же таблице, что и Cargo.

Я следовал примеру Эванса в своем приложении, но я столкнулся с некоторыми трудностями и надеюсь, что вы мне поможете.

У меня есть объект сущности InvoiceDefinition, который является совокупным корнем. Среди прочего у него есть поле типа InvoiceLine, которое является объектом значения. InvoiceLine не может существовать отдельно от InvoiceDefinition. Хитрость заключается в том, что InvoiceLine может быть узлом листа или дерева со списком дочерних значений InvoiceLine. Таким образом, он формирует рекурсивную структуру.

Может ли это быть допустимым значением объекта? Как сохранить такой объект значения в БД, используя Hibernate?

1 ответ

Я думаю, что нет ничего плохого, если объект значения является составным.
Хотя могут быть проблемы с неизменяемостью.

Насколько я знаю, сопоставление композитов с использованием hibernate немного сложно ( вот учебник для nhibernate).

Другие вопросы по тегам