스터디/스프링

스프링 공부 일지 - 기본 키 매핑

sleesm 2023. 2. 23. 19:34

이전 블로그 👉👉

2023.02.16 - [스터디/스프링] - 스프링 공부 일지 - JPA 시작

 

스프링 공부 일지 - JPA 시작

이번에는 JPA 프로그래밍 기본편 강의를 들으면서 공부를 해보려고 한다!! 강의 링크 👉👉 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를

sleecode.tistory.com

 

 

 

 

 

 

 


 

오늘은 Mapping과 관련된 강의를 들었다!!

 

하지만 이전 실전 강의에서 많이 겹쳤던 내용이 있어서

중요해 보이는 까먹기 쉬운 것들을 정리해 봤다!!!

 

 

 

그건 바로 

기본키 매핑이다!

 

 

 

Idenetity 전략

  • em.persist() 시점에서 INSERT SQL을 실행하고 DB에서 PK 조회
  • 영속성 컨텍스트에 넣으려면 ID값을 알아야하기 때문에 특수한 경우

 

 

 

 

 

 

Sequence 전략

  • em.persist 할 때 DB에서 시퀀스의 다음 값을 받아와서 id 값으로 넣고 영속성 컨텍스트에 넣음
  • 시퀀스(PK) 값만 얻고 commit 시점에 INSERT SQL 실행함 (예외 아님)
  • 계속 next call 하면 성능 문제 생김 -> allocationSize를 설정
    • initialValue = 1, allocationSize = 50
    • 1부터 시작하고 50개씩 늘리겠다
      • 시퀀스 생성 시에는 현재 값 1, 증가 값 50
    • allocationSize 개수만큼 한 번에 가져와서 메모리에 가져다 두고 업데이트시키는 방식

 

call next value for member_seq 가 2번 불림

-> 50개씩 써야 하는 데 처음 호출한 것은 1이라서 1번 더 호출한 것

DB SEQ = 1 | MEMORY 1

DB SEQ = 51 | MEMORY 2

DB SEQ = 51 | MEMORY 3

 

 

 

 

 

 

 

 

 

 

 

Table 전략

  • 키 생성 전용 테이블을 만들어서 하는 것
  • allocationsSize 옵션 똑같이 있음

 

테이블 전략 실행 시 테이블 변화

 

 

 

 

 

 

 

 

 


오늘은 여기까지

조큼 간단쓰하게 정리해 봤다!!!

 

실전 예제도 같이 진행했는데 실전에서 했던 예제와 비슷해서

블로그에 쓰진 않으려고 한다!!!

 

아무래도 다음 단계 강의를 먼저 듣고 왔기 때문에

좀 더 가벼운 느낌으로 개념을 확실히 하는 느낌으로 들을 수 있다!!

 

 

그럼 오늘은 

안녕🙌🙌🙌🙌🙌🙌🙌🙌🙌🙌🙌🙌🙌!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!