Вот упрощенная структура из видео: < /p>
Код: Выделить всё
]@Table("movie")
class Movie {
@Id
Long id;
String title;
Set rentals;
}
@Table("rental")
class Rental {
Duration duration; // No @Id, no equals/hashCode
Integer price;
}
Отсутствие равных/хэшкодов в аренде меня беспокоит, потому что в DDD объекты должны иметь равенство на основе идентификации, а не на основе стоимости (например, продолжительность и цена). Для фильма Equals/Hashcode может использовать ID, но аренда не имеет поля идентификации. Базирование равняется продолжительности и цене, по -видимому, нарушает DDD, что предполагает использование идентичности для равенства в организациях. Автоинкрементарный идентификатор арендной платы таблицы представляется непригодным для равных из-за стратегии обновления Delete и Instert обновления Spring Data JDBC, которая изменяет значения идентификатора. Или мое беспокойство даже действительно? Если мы основываем равенство на ссылке на объект, и если мы добавляем аренду только с помощью фильма (например, AddRental (арендная плата)), все должно быть хорошо. Но IRL нам, вероятно, нужно каким-то образом взаимодействовать с определенной арендной платой (например, Endrental), и для этого нам нужен способ отличить их
Предлагаемое решение:
Я считаю, что аренда должна иметь UUID-полю, сгенерированное применением, чтобы обеспечить идентификационную идентификационную идентификацию DDD, с равным/hashCode /> Вопросы: < /strong> < /p>
Упрощенно ли видео? Я имею в виду в реальном мире, нам, вероятно, нужен способ отличить аренду друг от друга < /p>
Является ли мое предположение правильным, что автогентерированный идентификатор не подходит для проверки равенства? Преднамеренное, и соответствует ли он DDD?>
Подробнее здесь: https://stackoverflow.com/questions/795 ... y-equality