Ответ 1
Поскольку эти коллекции полны по умолчанию, employee.getPhones()
должен возвращать прокси для этой коллекции (например, PersistentList
или аналогичный), который загружает элементы списка при доступе к списку.
Кроме того, поскольку Phone
является владельцем отношения, Hibernate не будет знать, существуют ли какие-либо телефоны для сотрудника или нет, поэтому он должен предположить, что список существует, хотя он может быть пустым. Тем не менее, Hibernate не имеет смысла возвращать null, поскольку:
- Hibernate должен сначала попытаться загрузить телефоны, чтобы увидеть, что их нет.
- для реализации ленивой загрузки коллекции
getPhones()
не должен возвращать null, а прокси - return null будет плохой практикой в любом случае (список все равно будет существовать, он просто пуст)
- Если список был пустым, вы не смогли добавить телефон и позволить Hibernate использовать каскадные и т.д., чтобы автоматически сохранить это изменение (спасибо Gimby за указание на то, что )
Использование нетерпеливой загрузки не должно меняться, поскольку, хотя Hibernate будет знать, что нет телефона для сотрудника, возвращающего null, когда пустой список будет выражать, все равно будет мало смысла (подумайте о том, чтобы разрешить добавлять телефоны для загруженного сотрудника, различия в коде, где они вам не понадобятся, если значение null было использовано для целевого отбора и т.д.).