본문 바로가기

EntityManager

(2)
[Spring] CGLIB로 트랜잭션 자동 관리 원리 구현 JDK Dynamic Proxy로 EntityManager 생명주기 자동 관리 원리 구현에서 프록시 객체를 통해 EntityManager 인터페이스의 메서드가 호출될때마다, 런타임에 EntityManager 구현체를 지연 생성 후 메서드 호출이 가능하도록 구현하였다. 이어서 트랜잭션 스코프를 나타내는 @Transactional 애노테이션을 붙인 메서드 내에서 EntityManager 구현체의 생명주기가 관리될수 있도록 구현할것이다.트랜잭션이 시작될 때 프록시 객체가 실제 EntityManager 구현체를 생성 후 트랜잭션을 마칠때 EntityManager 구현체를 닫히도록 로직을 작성하고, 트랜잭션 스코프 내에서 자동으로 트랜잭션이 처리되도록 구현하려고 한다.이를 통해, Spring과 JPA가 통합된 애..
[Spring] JDK Dynamic Proxy로 EntityManager 생명주기 자동 관리 원리 구현 이전에 EntityManger와 Persistence Context 내용에 이어서, JPA를 사용한 스프링 부트 애플리케이션(전반적인 Spring 생태계 이해 (9) - JPA)에서 트랜잭션을 시작하면, 런타임 시점에 어떻게 주입했던 EntityManager 구현체를 다시 생성해서 주입하는지 알아보기 위해서 작성한 내용이다. 그리하여 JPA에서는 이를 java로 어떻게 구현했는지 알아보았다.동적으로 객체 생성과 주입인터페이스로 동적으로 EntityManager 구현체 생성 및 주입웹 애플리케이션 계층구조에서 일반적으로 Service 클래스의 메서드를 트랜잭션 범위로 설정하며, Repository 객체 생성에 EntityManager 구현체를 주입한다. 이 트랜잭션 범위 마다 런타임 시점에 새로운 Enti..