-
#JPA-4 영속성 컨텍스트(1)JPA 2021. 2. 15. 16:11
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본
1. JPA에서 가장 중요한 2가지
• 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping)
• 영속성 컨텍스트
2. EMF와 EM
EMF와 EM -엔티티 매너저 팩토리는 여러 스레드가 동시에 접근해도안전하므로 서로 다른 스레드 간에 공유해도 되지만,
엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안 된다.
em이 커넥션 획득하는 시점 - > 보통 트랜잭션을 시작할 때
emf를 생성할 뗴 커넥션풀을 만든다 이 커넥션풀은 J2SE환경에서 사용하는 방법
JPA를 J2EE 환경(스프링 프레임워크 포함)에서 사용하면 해당 컨테이너가 제공하는 데이터 소스를 사용한다.
3. 영속성 컨텍스트
• JPA를 이해하는데 가장 중요한 용어
• “엔티티를 영구 저장하는 환경”이라는 뜻
• EntityManager.persist(entity);
• EM으로 ENTITY를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리
4.엔티티 매니저? 영속성 컨텍스트?
• 영속성 컨텍스트는 논리적인 개념
• 눈에 보이지 않는다.
• 엔티티 매니저를 통해서 영속성 컨텍스트에 접근
• 영속성 컨텍스트는 EM을 생성할 때 하나 만들어진다.
• EM을 통해서 영속성 컨텍스트에 접근, 관리 할 수 있다.
5,6 보기전 보조 설명(SE, EE, ME)
* Java SE (Java platform Standard Edition, J2SE 업그레이드 버전)
- 가장 널리 쓰이는 자바 핵심 라이브러리 및 API 집합체
- 데스크톱, 서버, 임베디드시스템 등을 위한 표준 자바 플랫폼에서 사용
(Java EE, ME 는 목적에 따라 SE를 기반으로 기존의 일부를 택하거나 추가하여 구성된 것)
* Java EE (Java platform Enterprise Edition, J2EE 업그레이드 버전)
- 서버 측 개발을 위한 플랫폼에서 사용
- 응용 프로그램(ex. 웹 어플리케이션) 서버에서 장애 복구, 분산 멀티미디어, 다중 계층 등의 자바
소프트웨어 기능을 제공 (응용 프로그램에서 큰 규모의 분산 시스템이 필요한 경우 사용)
* Java ME (Java platform Micro Edition, J2ME 업그레이드 버전)
- 임베디드 시스템 개발을 위한 플랫폼(모바일, PDA, 셋톱 박스 등) 에서 사용
- 과거 Java SE 버전을 기반으로 하기 때문에 자바 1.5 부터 도입된 기능 중 일부(ex. generic)는 미포함
[출처] Java SE, EE, ME 의 차이점은? |작성자 푸른인연
5. J2SE 환경
매니저와 영속성 컨텍스트가 1:1)
6. J2EE, 스프링 프레임워크 같은 컨테이너 환경
(엔티티 매니저와 영속성 컨텍스트가 N:1)
7. 엔티티의 생명주기
엔티티의 생명주기 • 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
비영속 • 영속 (managed) 영속성 컨텍스트에 관리되는 상태
- EX)엔티티 매니저를 통해서 엔티티를 영속성 컨텍스트에 저장
영속 • 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태
• 삭제 (removed) 삭제된 상태
준영속 & 삭제 'JPA' 카테고리의 다른 글
#JPA-6 플러시 & 준영속 상태 (0) 2021.02.15 #JPA-5 영속성 컨텍스트(2) (0) 2021.02.15 #JPA-3 JPA 객체와 TABLE 매핑 & JPA 동작 확인 & JPQL정의 (0) 2021.02.15 #JPA-2 프로젝트 생성 및 기본 설정 (0) 2021.02.02 #JPA-1 SQL 중심적인 개발의 문제를 해결하기 위해 등장한 JPA (0) 2021.02.01