SlideShare a Scribd company logo
1 of 5
영속성 컨텍스트
(Persistence Context)
탑크리에듀교육센터
Persistence Context
• EntityManager 가 관 리 하 는 엔 티 티 를 영 구 적 으 로 저 장 하 는 공 간 으 로
EntityManager(Session)를 생성할 때 하나가 만들어지는데 엔티티 매니저가 엔티티
를 관리할 때 영속성 컨텍스에 보관하고 관리한다.
• 현재 관리되는 모든 엔티티 인스턴스의 집합을 영속성 컨텍스트(Persistence Context)
라고 한다. EntityManager를 통해 접근 가능하며 EntityManager에 의해 관리되는
엔티티 컨테이너의 집합이다.
• 어떤 엔티티 오브젝트에 대한 검색에서 영속성 컨텍스트 안에 이미 존재한다면
(Managed Entity) DB 까 지 갈 필 요 가 없 는 것 이 므 로 영 속 성 컨 텍 스 트 가
EntityManager에 대한 1차 캐시(로컬 캐시)와 같은 역할을 한다. (항상 DB에서 엔
티티에 해당 되는 레코드를 다시 읽어들이는 refresh는 제외)
• 영속성 컨텍스트의 주요 역할은 데이터베이스 엔티티 객체가 동일한 EntityManager
내의 하나 이상의 메모리 내 엔티티 객체로 표현되는지 확인하는 것이다. 모든
EntityManager는 고유한 자신만의 영속성 컨텍스트를 관리하므로 어떤 데이터베이스
객체가 서로 다른 EntityManager 인스턴스에서 다른 메모리상의 엔터티 객체로 나타
낼 수 있다. 그러나 동일한 EntityManager를 사용하여 동일한 데이터베이스 객체를
두 번 이상 검색하면 항상 동일한 메모리 내의 엔터티 객체가 생성되어야 한다.
Persistence Context
• JPA에서 영속성 컨텍스트에 엔티티를 보관할때 최초 상태를 복사해서 저장하는데 이
것을 스냅샷이라 한다. 플러시 시점에 스냅샷과 엔티티를 비교해서 변경된 엔티티를
찾는다. (플러시란 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것이다.)
• 자동변경감지 : 영속상태의 객체가 영속성 컨텍스트에서 관리되는데 이 영속상태의 객
체의 어떤 속성이 변경됨을 자동으로 감지한다. 이 영속객체는 작업단위가 종료되는
시점에 DB와 동기화 된다.
• 1차 캐시 : 영속성 컨텍스트에서 관리하는 영속객체는 영속성 컨텍스트에서 모두 기억
하는데 어떤 key를 기준으로 Entity 객체를 조회한 경우 DB의 실제 데이터를 조회하기
전에 영속성 컨텍스트 내부의 영속객체를 먼저 조회한다. 없는 경우에만 DB에서 조회
하고 이를 반복 가능한 읽기라고 하며 성능상 이점이 있다.
• 객체동일성 : 자바쪽과 DB쪽 모두 일치하는 경우 동일하게 간주한다. 즉 자바에서
“==“ 연산자로 비교했을 때도 같아야 하며 DB에서 key로 비교했을 때도 일치해야 동
일하다는 것이다.
Persistence Context
Persistence Context

More Related Content

More from 탑크리에듀(구로디지털단지역3번출구 2분거리)

(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
 
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
 
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
 
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
 
2. xamarin.android 2.3 hello android multi screen example part2
2. xamarin.android 2.3 hello android multi screen example part22. xamarin.android 2.3 hello android multi screen example part2
2. xamarin.android 2.3 hello android multi screen example part2
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
 

영속성 컨텍스트(Persistence context)_자바학원추천/구로IT학원/JPA학원/스프핑학원/자바교육

  • 2. Persistence Context • EntityManager 가 관 리 하 는 엔 티 티 를 영 구 적 으 로 저 장 하 는 공 간 으 로 EntityManager(Session)를 생성할 때 하나가 만들어지는데 엔티티 매니저가 엔티티 를 관리할 때 영속성 컨텍스에 보관하고 관리한다. • 현재 관리되는 모든 엔티티 인스턴스의 집합을 영속성 컨텍스트(Persistence Context) 라고 한다. EntityManager를 통해 접근 가능하며 EntityManager에 의해 관리되는 엔티티 컨테이너의 집합이다. • 어떤 엔티티 오브젝트에 대한 검색에서 영속성 컨텍스트 안에 이미 존재한다면 (Managed Entity) DB 까 지 갈 필 요 가 없 는 것 이 므 로 영 속 성 컨 텍 스 트 가 EntityManager에 대한 1차 캐시(로컬 캐시)와 같은 역할을 한다. (항상 DB에서 엔 티티에 해당 되는 레코드를 다시 읽어들이는 refresh는 제외) • 영속성 컨텍스트의 주요 역할은 데이터베이스 엔티티 객체가 동일한 EntityManager 내의 하나 이상의 메모리 내 엔티티 객체로 표현되는지 확인하는 것이다. 모든 EntityManager는 고유한 자신만의 영속성 컨텍스트를 관리하므로 어떤 데이터베이스 객체가 서로 다른 EntityManager 인스턴스에서 다른 메모리상의 엔터티 객체로 나타 낼 수 있다. 그러나 동일한 EntityManager를 사용하여 동일한 데이터베이스 객체를 두 번 이상 검색하면 항상 동일한 메모리 내의 엔터티 객체가 생성되어야 한다.
  • 3. Persistence Context • JPA에서 영속성 컨텍스트에 엔티티를 보관할때 최초 상태를 복사해서 저장하는데 이 것을 스냅샷이라 한다. 플러시 시점에 스냅샷과 엔티티를 비교해서 변경된 엔티티를 찾는다. (플러시란 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것이다.) • 자동변경감지 : 영속상태의 객체가 영속성 컨텍스트에서 관리되는데 이 영속상태의 객 체의 어떤 속성이 변경됨을 자동으로 감지한다. 이 영속객체는 작업단위가 종료되는 시점에 DB와 동기화 된다. • 1차 캐시 : 영속성 컨텍스트에서 관리하는 영속객체는 영속성 컨텍스트에서 모두 기억 하는데 어떤 key를 기준으로 Entity 객체를 조회한 경우 DB의 실제 데이터를 조회하기 전에 영속성 컨텍스트 내부의 영속객체를 먼저 조회한다. 없는 경우에만 DB에서 조회 하고 이를 반복 가능한 읽기라고 하며 성능상 이점이 있다. • 객체동일성 : 자바쪽과 DB쪽 모두 일치하는 경우 동일하게 간주한다. 즉 자바에서 “==“ 연산자로 비교했을 때도 같아야 하며 DB에서 key로 비교했을 때도 일치해야 동 일하다는 것이다.