Sobes.tech
Назад к вопросам
Senior
4

Какие виды связей в Hibernate знаете и как их описать? Какие состояния сущности существуют?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В Hibernate существуют следующие виды связей между сущностями:

  1. One-to-One (один к одному) — одна сущность связана с одной другой сущностью.

    @OneToOne
    @JoinColumn(name = "passport_id")
    private Passport passport;
    
  2. One-to-Many (один ко многим) — одна сущность связана с множеством других.

    @OneToMany(mappedBy = "owner")
    private List<Car> cars;
    
  3. Many-to-One (многие к одному) — множество сущностей связаны с одной.

    @ManyToOne
    @JoinColumn(name = "owner_id")
    private Owner owner;
    
  4. 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 (удалённое) — объект помечен на удаление из базы при следующем коммите.

Понимание этих состояний важно для правильного управления жизненным циклом объектов и эффективной работы с базой данных.