1. JPA 개요
1.1 ORM (Object-Relational Mapping)
- ORM은 객체와 관계형 데이터베이스 간의 데이터를 매핑하는 기술이다.
- 객체와 데이터베이스의 설계를 분리하여 관리할 수 있다.
- ORM 프레임워크가 객체와 데이터베이스 간의 매핑을 처리한다.
1.2 JPA의 역사
- JPA는 EJB(Enterprise JavaBeans) 표준에서 시작되어 Hibernate 등의 오픈소스 프레임워크로 발전하였으며, 이후 자바 표준으로 자리 잡았다.
1.3 JPA의 생산성
- 코드 간소화로 생산성을 높인다: 저장, 조회, 수정, 삭제가 간단한 코드로 처리 가능하다.
1.4 JPA의 성능 최적화
- 1차 캐시, 쓰기 지연, 지연 로딩 등을 제공하여 성능을 최적화한다.
2. 영속성 컨텍스트
2.1 영속성 컨텍스트란?
- 영속성 컨텍스트(Persistence Context)는 엔티티를 영구적으로 저장하는 환경으로, 엔티티 상태를 관리하며 데이터베이스와의 중간 다리 역할을 한다.
- JPA에서 데이터베이스와 상호작용하기 위한 핵심 개념으로, 엔티티의 생명주기와 연관된다.
2.2 엔티티의 생명주기
- 비영속 (new/transient)
- 영속성 컨텍스트와 관계가 없는 새로운 상태.
- 객체를 생성했지만
persist()를 호출하지 않은 상태.
- 영속 (managed)
- 영속성 컨텍스트에 관리되는 상태.
EntityManager.persist() 호출 후 상태.
- 준영속 (detached)
- 영속성 컨텍스트에 저장되었다가 분리된 상태.
EntityManager.detach() 호출 후 상태가 변경된다.