반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- SSAFYcial
- 싸피셜
- 싸피 10기
- 리액트
- 자료구조
- 싸피 11기
- 알고리즘
- 코딩테스트 자바
- 백준
- 자바스크립트 자료구조
- 프론트엔드
- ssafy
- 싸피 기자단
- 싸피11기
- 코딩테스트
- 싸피
- 비동기
- 코드트리
- 자바 코딩테스트
- 프로그래머스
- swea
- 싸피 12기
- 인프런
- 싸피 대전캠퍼스
- 싸피10기
- 자바스크립트
- jpa
- 개발자
- 알고리즘 자바
- 자바 알고리즘
Archives
- Today
- Total
병아리의 코딩 일기
[JPA] 영속성 컨텍스트란? 본문
JPA에서 가장 중요한 2가지
1. 객체와 관계형 데이터베이스 매핑하기(ORM = Object Relational Mapping)
2. 영속성 컨텍스트
영속성 컨텍스트란?
- JPA를 이해하는데 가장 중요한 용어
- "엔티티를 영구 저장하는 환경"
- EntityManager.persist(entity); -> 사실 db에 저장한다는 것이 아니라 엔티티를 영속성 컨텍스트라는 곳에 저장한다는 것!
엔티티 매니저? 영속성 컨텍스트?
- 영속성 컨텍스트는 논리적인 개념이다.
- 눈에 보이지 않는다.
- 엔티티 매니저를 통해 영속성 컨텍스트에 접근한다.
EntityManager 를 실행하면 PersistenceContext 가 생성이 된다.
엔티티의 생명주기
엔티티는 생명주기가 4가지 있다.
- 비영속 : 최초에 entity를 생성한 상태. 영속성 컨텍스트와는 전혀 상관없는 새로운 상태
- 영속: 영속성 컨텍스트에 관리되는 상태
- 준영속: 영속성 컨텍스트에 저장되었다가 분리된 상태
- 삭제: 삭제된 상태
1. 비영속
member 객체 생성(비영속 상태).
아직 영속 컨텍스트(entityManager)에 넣지 않은 상태.
//비영속
Member member = new Member();
member.setId(100L);
member.setName("HelloJPA");
2. 영속
멤버 객체를 생성을 한 후,
EntityManager 에 객체를 저장한 상태.
EntityManager를 통해서 객체가 관리가 된다.
사실은 이때도 DB에 저장되지 않는다.
//비영속
Member member = new Member();
member.setId(100L);
member.setName("HelloJPA");
//영속
em.persist(member);
영속상태가 된다고 해서 바로 Query 에 날라가는 것이 아니라,
Transaction을 커밋하는 시점에 영속성 컨텍스트에 있는 애가 쿼리에 날라가게 된다!
//비영속
Member member = new Member();
member.setId(100L);
member.setName("HelloJPA");
//영속
em.persist(member);
tx.commit();
3. 준영속
회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태
em.detach(member);
4. 삭제
객체를 삭제한 상태
em.remove(member);
대체 영속성 컨텍스트는 무슨 이상한 메커니즘일까?
어플리케이션과 DB 사이에 중간 단계가 있는 것이다.
여기에는 큰 이점이 있다. 다음 시간에 알아보자!
728x90
반응형
LIST
'자바 Java > Spring' 카테고리의 다른 글
[JPA]플러시 (0) | 2023.02.15 |
---|---|
[JPA] 영속성 컨텍스트의 이점 (0) | 2023.02.15 |
JPA 구동 방식 (0) | 2023.02.15 |