я бы не обобщал сразу всё
Это аспект и синхронайзер, который оборачивает методы помеченные аннотацией. Что бы обеспечить целостность транзакции нужен перзистенс контекст и сама транзакция. Контекст в JPA = EntityManager и Session в хибернейте. Грубо говоря контекст = синхронайзер, котрый следит за состоянием объектов и за тем что бы они в конце концов были сохранены в базу. В transactional методах EntityManager проксируется и сторится в ThreadLocal переменную. Все остальное обеспечивается аспектами, перед инвоком самого метода менеджер транзакций в зависимости от настроек аннотации (propagation и т.д) решает несколько вопросов: создать ли новый entity manager, стартануть ли транзакцию новую или прокинуть старую, если она есть.
Обсуждают сегодня