Spring данные jdbc и равенство дочерних объектовJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring данные jdbc и равенство дочерних объектов

Сообщение Anonymous »

Я изучаю Spring Data JDBC по видео Мацея Валковяка (), в котором представлен совокупный корень Movie с отношением один-ко-многим к объектам Rental. В объекте Rental отсутствует поле @Id, и не реализовано значение Equals/hashCode. Таблица проката имеет автоматически увеличивающийся идентификатор (не сопоставленный с сущностью) и неявный внешний ключ Movie_id.
Вот упрощенная структура из видео:

Код: Выделить всё

]@Table("movie")
class Movie {
@Id
Long id;
String title;
Set rentals;
}

@Table("rental")
class Rental {
Duration duration; // No @Id, no equals/hashCode
Integer price;
}
Мое беспокойство:
Отсутствие равных/hashCode в Rental беспокоит меня, потому что в DDD сущности должны иметь равенство на основе идентичности, а не на основе значения (например, продолжительности и цены). Для фильма «equals/hashCode» может использовать id, но «Rental» не имеет поля идентификации. Основание равенства на продолжительности и цене, похоже, нарушает DDD, который предлагает использовать идентичность для равенства сущностей. Автоматически увеличивающийся идентификатор таблицы аренды кажется непригодным для равных из-за стратегии обновления Spring Data JDBC с удалением и вставкой, которая изменяет значения идентификатора. Или мое беспокойство вообще обоснованно? Если мы основываем равенство на ссылке на объект и добавляем прокат только через Movie (например, addRental(Rental rent)) все должно быть хорошо. Но в реальной жизни нам, вероятно, нужен какой-то способ взаимодействия с определенными прокатами (например, endRental), а для этого нам нужен способ их различения.
Предлагаемое решение:
Я считаю, что Rental должен иметь поле UUID, сгенерированное приложением, чтобы обеспечить идентичность объекта, совместимую с DDD, с помощью равного/hashCode.
Вопросы:
Упрощено ли видео? Я имею в виду, что в реальном мире нам, вероятно, нужен способ отличать аренду друг от друга.
Правильно ли мое предположение о том, что автоматически сгенерированный идентификатор непригоден для проверки на равенство?
Правильен ли мой подход UUID для соответствия DDD в Spring Data JDBC?
Является ли дизайн Spring Data JDBC (опуская @Id для зависимых объектов, таких как аренда) намеренным и соответствует ли он DDD?
/>Спасибо за любую информацию или примеры из вашего опыта работы с Spring Data JDBC и DDD!

Подробнее здесь: https://stackoverflow.com/questions/795 ... y-equality
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»