출처: https://www.youtube.com/watch?v=C7Uu_hFnQN8&list=PLOSNUO27qFbvzGd3yWbHISxHctPRKkctO&index=12
기본키 생성 테이블을 만들면 거기서 pk가 될 id를 가지고 와서 우리가 만들고자하는 DB의 레코드 데이터는 객체정보+기본키 생성 테이블에서 가져온 pk로 구성되게 됨.
아래와 같이 코드를 구성하면 내가 예상했던 대로 그 아래와 같이 쿼리문이 나가는 것을 볼수 있다.
내가 어떠한 값을 persist(insert)해주지도 않았는데 insert가 일어나는 것을 알고 있다. 따라서 내가 pk를 1부터 사용하고 싶다면 위와 같이 initialValue를 0으로 해주고 시작하면 된다.
위와같이 기본키를 위한 테이블과 기본 테이블이 생성된 후에
기본키로 사용할 id를 가져옴(select). 가져오는 것에서 끝나지 않고 다음 키값을 미리 지정 해주기 위해서 기본키 값의 update(set next_value=?)가 일어남.next_value는 valueColumn의 이름임(valueColumnName)
(pkColumnName=id_name, valueColumnName=next_value)
이상으로 JPA에서 기본키를 생성하는 3가지 방법을 살펴보았습니다. (1. Identity를이용한 기본키 생성, Sequence이용한 기본키 생성(@SequenceGenerator), Table을 이용한 기본키 생성(@TableGenerator))(복습해 보자면 @GeneratedValue어노테이션을 사용한다는 것은 직접 기본키를 생성하는 것이 아닌 DB에서 생성하는 기본키를 사용한다는 의미임).
더 중요한 것은 기본키를 생성하는데에 있어 이러한 방식(
)이 있다 정도로 알아 두는 것임.
'Spring&IntelliJ' 카테고리의 다른 글
JPA. 필드(field)에 적용되는 몇가지 중요 어노테이션(2)@Temporal @Lob, @Enumerated, @transient (1) | 2024.01.04 |
---|---|
JPA. 필드(field)에 적용되는 몇가지 중요 어노테이션 (0) | 2024.01.04 |
JPA. Sequence를 이용한 기본키 생성전략 (1) | 2024.01.04 |
JPA 영속객체의 라이프사이클 (0) | 2024.01.02 |
JPA 영속성 컨텍스트의 이해 (0) | 2024.01.02 |