Hibernate / JPA trainee
Что такое VO?
Ответ
Value Object — объект, который определяется ТОЛЬКО своими значениями (не identity). Например, Money(amount, currency) — два VO с одинаковыми полями равны. Иммутабельны, имеют equals/hashCode по содержимому.
Разбор: VO (Value Object) определяется исключительно своими значениями, а не identity: иммутабелен и реализует equals/hashCode по содержимому, поэтому Money(100, USD) равен другому такому же. Ловушки: сравнение по ссылке и наличие id — признаки Entity/DTO, а не VO; объект для переноса данных — это DTO; и VO именно неизменяем, а не изменяемая обёртка из пула.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.