취업 준비/실전 JPA

4/14 jpa 강의

2023. 4. 14. 14:39
목차
  1. JPA에서 가장 중요한 2가지
  2. 영속성 컨텍스트(persistence context) - 가장중요
  3. 엔티티의 생명주기
  4. 1차 캐시
  5. 엔티티 등록
  6. 플러시(flush())
  7. 준영속
  8. JPA에서 가장 중요한 2가지
  9. 영속성 컨텍스트(persistence context) - 가장중요
  10. 엔티티의 생명주기
  11. 1차 캐시
  12. 엔티티 등록
  13. 플러시(flush())
  14. 준영속

JPA에서 가장 중요한 2가지

  • 객체와 관계형 데이터 매핑하기
  • 영속성 컨텍스트
  • 엔티티를 영구 저장하는환경

영속성 컨텍스트(persistence context) - 가장중요

엔티티의 생명주기

  • 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태
  • ```java Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); //영속 em.persist(member); ```
  • 영속(managed): 영속 컨텍스트에 저장된 상태
  • 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된상태
```java
//회원 엔티티를 영속성 컨텍스트에 분리, 준영속 상태
em.detach(member);

// 객체를 삭제한 상태(삭제)
em.remove(member);
```
  • 삭제(removed): 삭제된 상태

영속성 컨텍스의 이점

1차 캐시

엔티티 등록

엔티티 매니저는 트랜젝션을 커밋하기 지적까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 Insert SQL에 저장된다

transaction.commit()을 날리면 그때 날라간다.

플러시(flush())

영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영한다.

  1. 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷하고 비교하여 수정된 엔티티를 찾는다.
  2. 수정된 엔티티 쓰기 지연 SQL저장소에 등록
  3. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송
  • em.flush()를 직접 호출
  • 트랜잭션 커밋시 플러시 자동호출
  • JPQL 쿼리 실행시 플러시가 자동 호출

영속성 컨텍스트에 보관된 엔티티를 지운다고 생각하면 안됨, 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 것이 플러시이다.


준영속

엔티티의 비영속 → 영속 → 삭제 상태 변화에서 영속→ 준영속

1.em.detach(entity): 특정 엔티티만 준영속 상태로 전환한다

  1. em.clear() 영속성 컨텍스트를 완전히 초기화한다.
  2. em.close() 영속성 컨텍스트를 종료한다.

JPA에서 가장 중요한 2가지

  • 객체와 관계형 데이터 매핑하기
  • 영속성 컨텍스트
  • 엔티티를 영구 저장하는환경

영속성 컨텍스트(persistence context) - 가장중요

엔티티의 생명주기

  • 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태
  • ```java Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); //영속 em.persist(member); ```
  • 영속(managed): 영속 컨텍스트에 저장된 상태
  • 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된상태
```java
//회원 엔티티를 영속성 컨텍스트에 분리, 준영속 상태
em.detach(member);

// 객체를 삭제한 상태(삭제)
em.remove(member);
```
  • 삭제(removed): 삭제된 상태

영속성 컨텍스의 이점

1차 캐시

엔티티 등록

엔티티 매니저는 트랜젝션을 커밋하기 지적까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 Insert SQL에 저장된다

transaction.commit()을 날리면 그때 날라간다.

플러시(flush())

영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영한다.

  1. 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷하고 비교하여 수정된 엔티티를 찾는다.
  2. 수정된 엔티티 쓰기 지연 SQL저장소에 등록
  3. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송
  • em.flush()를 직접 호출
  • 트랜잭션 커밋시 플러시 자동호출
  • JPQL 쿼리 실행시 플러시가 자동 호출

영속성 컨텍스트에 보관된 엔티티를 지운다고 생각하면 안됨, 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 것이 플러시이다.


준영속

엔티티의 비영속 → 영속 → 삭제 상태 변화에서 영속→ 준영속

1.em.detach(entity): 특정 엔티티만 준영속 상태로 전환한다

  1. em.clear() 영속성 컨텍스트를 완전히 초기화한다.
  2. em.close() 영속성 컨텍스트를 종료한다.
  3. https://www.notion.so/JPA-98cfc379de6f4075a2604cb40be73a2e

 

저작자표시 (새창열림)

'취업 준비 > 실전 JPA' 카테고리의 다른 글

4/29~5/5일까지 목표  (0) 2023.04.29
4/17 ~4/23 취준 준비  (0) 2023.04.17
4/13 취준 기록(프로그래머스 개미군단, 모스 부호,가위 바위 보)  (0) 2023.04.13
4/12 취준 준비  (1) 2023.04.12
4/9 취준 기록 (JPA)  (0) 2023.04.09
  1. JPA에서 가장 중요한 2가지
  2. 영속성 컨텍스트(persistence context) - 가장중요
  3. 엔티티의 생명주기
  4. 1차 캐시
  5. 엔티티 등록
  6. 플러시(flush())
  7. 준영속
  8. JPA에서 가장 중요한 2가지
  9. 영속성 컨텍스트(persistence context) - 가장중요
  10. 엔티티의 생명주기
  11. 1차 캐시
  12. 엔티티 등록
  13. 플러시(flush())
  14. 준영속
'취업 준비/실전 JPA' 카테고리의 다른 글
  • 4/29~5/5일까지 목표
  • 4/17 ~4/23 취준 준비
  • 4/13 취준 기록(프로그래머스 개미군단, 모스 부호,가위 바위 보)
  • 4/12 취준 준비
가끔개발
가끔개발
가끔개발
가끔쓰는개발블로그
가끔개발
전체
오늘
어제
  • 분류 전체보기 (75)
    • 오류모음집 (8)
      • Ohouse버그 (6)
    • 포트폴리오 (14)
      • ohouseClone (12)
    • JAVA&Spring (4)
      • Settting (3)
    • Back-end (4)
    • 알고리즘 문제 (20)
      • 이론 (6)
      • DFS&BFS (2)
      • 이진탐색 (1)
      • 다이나믹 프로그래밍 (0)
      • 프로그래머스 (11)
    • 개발 잡동산이 (0)
    • 취업 준비 (19)
      • 실전 JPA (15)
    • 개발 꿀팁 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 기술면접
  • 자바
  • 신입
  • intellj
  • 취준생
  • java
  • CS
  • 개발자
  • 취준
  • 면접
  • 동빈나
  • 백엔드
  • Spring
  • programing
  • 이것이 코딩 테스트이다

최근 댓글

최근 글

hELLO · Designed By 정상우.
가끔개발
4/14 jpa 강의
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.