Встречается на собеседованиях • сегодня

Почему Entity нельзя объявить как final в JPA

В JPA Entity не может быть final, потому что провайдер JPA (например, Hibernate) использует прокси-объекты для ленивой загрузки (Lazy Loading) и других оптимизаций. Прокси создаются путем наследования от класса Entity, а final-классы нельзя наследовать.

Пример:

java
@Entity
public class User {  // Если добавить final — будет ошибка!
    @Id
    private Long id;
    private String name;
    // Геттеры/сеттеры
}

Если User сделать final, Hibernate не сможет создать прокси, и Lazy Loading для ассоциаций (например, @ManyToOne(fetch = LAZY)) перестанет работать. Также это может нарушить кеширование и другие механизмы JPA.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы