Kim-Baek 개발자 이야기

JPA와 Spring Data JPA 본문

개발

JPA와 Spring Data JPA

김백개발자 2020. 8. 5. 15:52

JPA ( java persistence API ) 는 자바 표준 ORM이다

Entity

Entity 는 데이터 베이스에서 영속적으로 저장된 데이터를 자바 객체로 매핑한 것

EntityMananger

Entity를 필요에 따라 데이터 베이스와 동기화하는 역할을 담당하는 것. 영속성 컨텍스트 ( Persistence Context ) 라는 엔티티를 관리하는 영역이 있다. 

영속성 컨텍스트가 데이터베이스의 캐시와 같은 역할을 한다. 여기에 작업이 수행되더라도 즉시 데이터 베이스 반영은 안됨

영속성 컨텍스트는 트랜잭션마다 준비되기 때문에 엔티티는 같은 트랜잭션에서만 공유되고 다른 트랜잭션에서 처리 중인 엔티티는 보이지 않음

트랜잭션 종료되면 모든 엔티티는 분리 상태다.

스프링 데이터란

데이터베이스나 캐시 서버 등 데이터에 접근하기 위한 코드를 줄이는 것을목적으로 하는 스프링 프로젝트다. Repository를 구현하는 것을 권장한다. 구현은 개발자에게 맡겨져 있는데, 이것을 최소화하는 것이 목적이다,

스프링 데이터 JPA

이제 사용자는 EntityManager의 API를 직접 호출하지 않고, 스프링 데이터 JPA가 제공하는 것을 호출한다. 이것은 스프링 데이터 JPA가 제종하는 SimpleJpaRepository 클래스나 그 상위 클래스에 작성된다.

사용자는 엔티티 적용 Repository 인터페이스를 작성한다. 이 인터페이스가 JpaRepositroy를 상속한다. 이러면 DI 컨테이너를 초기화 하는 시점에 사용자가 만든 인터페이스에 대해 SimpleJpaRepository를 위임하는 프락시 클래스를 생성하고, 빈으로 등록한다. 

반응형
Comments