Hibernate - luk6233/interview GitHub Wiki

ORM framework (object-relational mapping) мапінг java-об'єктів до таблиць

JPA (java persistance API)

Не потрібно конекшенів, стейтменти, резалт сети. Під капотом JDBC.

Переваги: просте апі, щоб витягувати і зберігати обєкти в базі даних механізм транзакцій

датасорс надає конекшени до бд

LocalSessionFactoryBean створює SessionFactory - для роботи з сесіями, і поміщає в контекст. Вказати датасорс, пакет, проперті хібернейта (діалект, hbm2ddl.auto - як оновлювати таблиці - update, create-drop, none (якщо флайвей))

PlatformTransactionManager - дає можливість використовувати анотацію @Transactional

JpaTransactionManager

з сешнфакторі берем сесію

session.save() session.get(Company.class, 4) якщо немає запису, то в session.load() - якщо немає запису, тоді кидає ексепшн з сесії транзакцію (session.beginTransaction)

комітимо транзакцію (transaction.commit())

Ентіті - обєкт з ідентифікатором Валью обджект - для переноса даних

@MappedSuperclass @Entity @Table @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column @Transient (не мапить)

mappedBy - поле по якому мапиться FetchType - LAZY - вичитує з бази тільки по запиту EAGER

@Transactional - робиться проксі над методом (коміт або ролбек)