Hardjpa
Что такое JPA Entity lifecycle?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Entity имеет 4 состояния: New/Transient (не сохранён), Managed/Persistent (в persistence context), Detached (был managed, теперь нет), Removed (помечен для удаления).
new User() persist() find()/query()
│ New/Transient ───────────────► Managed/Persistent
│ │ ▲
│ detach()/close │ │ merge()
│ ▼ │
│ Detached
│ remove()
│ ▼
│ Removed ──flush()──► DELETE@Entity
public class User {
@PrePersist void onCreate() { /* hook */ }
@PreUpdate void onUpdate() { /* hook */ }
@PostLoad void onLoad() { /* hook */ }
}flush— синхронизация с БД без commit;commit— запись + commit транзакции;- Dirty checking — Hibernate сравнивает состояние со snapshot, генерирует UPDATE;
- Cascade types: PERSIST, MERGE, REMOVE, DETACH, REFRESH, ALL.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.