Назад к вопросам
СБЕР
Senior
4
Какие виды связей в Hibernate знаете и как их описать? Какие состояния сущности существуют?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Hibernate существуют следующие виды связей между сущностями:
-
One-to-One (один к одному) — одна сущность связана с одной другой сущностью.
@OneToOne @JoinColumn(name = "passport_id") private Passport passport; -
One-to-Many (один ко многим) — одна сущность связана с множеством других.
@OneToMany(mappedBy = "owner") private List<Car> cars; -
Many-to-One (многие к одному) — множество сущностей связаны с одной.
@ManyToOne @JoinColumn(name = "owner_id") private Owner owner; -
Many-to-Many (многие ко многим) — множество сущностей связаны с множеством других.
@ManyToMany @JoinTable( name = "student_course", joinColumns = @JoinColumn(name = "student_id"), inverseJoinColumns = @JoinColumn(name = "course_id") ) private Set<Course> courses;
Состояния сущности в Hibernate:
- Transient (переходное) — объект создан, но не связан с сессией и не сохранён в базе.
- Persistent (постоянное) — объект связан с сессией и отслеживается Hibernate; изменения будут синхронизированы с базой.
- Detached (отсоединённое) — объект был связан с сессией, но сессия закрыта; объект не отслеживается.
- Removed (удалённое) — объект помечен на удаление из базы при следующем коммите.
Понимание этих состояний важно для правильного управления жизненным циклом объектов и эффективной работы с базой данных.