번호 | 목차 |
---|
1. | JPA에서 가장 중요한 2가지 |
2. | JPA 구동 방식 |
3. | JPQL |
1. JPA에서 가장 중요한 2가지
- ORM(Object Relational Mapping) : 객체와 관계형데이터베이스 매핑하기
- 영속성 컨텍스트 : 엔티티를 영구 저장하는 환경, 엔티티 매니저를 통해 영속성 컨텍스트에 접근
EntityManager.persist(entity);
참고
- J2SE 환경 : 엔티티 매니저와 영속성 컨텍스트가 1:1
- J2EE(스프링 프레임워크와 같은 컨테이너 환경) : 엔티티 매니저와 영속성 컨텍스트가 N:1
2. 엔티티의 생명주기

(1) 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태

Member member = new Member();
member.setId(1L);
member.setUsername("회원1");
(2) 영속(managed) : 영속성 컨텍스트에 관리되는 상태

Member member = new Member();
member.setId(1L);
member.setName("회원1");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(member);
(3) 준영속(detatched) : 영속성 컨텍스트에 저장되었다가 분리된 상태
em.detach(member);
(4) 삭제(removed) : 삭제된 상태
em.remove(member);
3. 영속성 컨텍스트의 이점
(1) 1차 캐시
Member member = new Member();
member.setId(1L);
member.setName("회원1");
em.persist(member);
Member findMember = em.find(Member.class, "member1");
(2) 동일성(identity) 보장
(3) 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
(4) 변경 감지(Dirty Checking)
(5) 지연 로딩(Lazy Loading)