하이버네이트 자동 키 생성 전략
2022. 3. 24. 12:49ㆍBackEnd(Java)/Spring Data JPA
현재 JPA(Hibernate) + Mysql로 연동하는 프로젝트를 진행 하던 중 아래의 그림 1을 보고 왜 저 테이블을 만들지?? 라는것이 궁금해서 구글링을 통해찾아보게 되었다.
![](https://blog.kakaocdn.net/dn/CBSJl/btrw7QZDNcX/qEV916QNQeVcGNchk8xamk/img.png)
![](https://blog.kakaocdn.net/dn/kxJ9R/btrw43MoEh1/lw2LF9alWQlNu2YC3qEWIK/img.png)
DB는 테이블의 기본 키(PK)를 선정 할 때 두가지 방법이 있는데, 자연키(ex. 주민등록번호, 이메일 등) 와 대체키(의미없는 일련의 번호)로 구성된다.
JPA는 테이블을 생성할 때 기본 키를 대체키로 생성한다. (사용법은 아래 소스코드 참조)
@Entity
@Getter @Setter
public class test{
@Id @GeneratedValue //@GeneratedValue == @GeneratedValue(strategy = GenerationType.Auto)
private int id;
}
테이블 생성전략
(테이블의 기본키를 생성하는 전략에는 총 4가지가 있는데 기본값은 AUTO이다.)
생성 전략
|
설명
|
AUTO
(default) |
JPA 구현체가 자동으로 생성 전략을 결정한다.
|
IDENTITY
|
기본키 생성을 데이터베이스에 위임한다. 예를 들어 MySQL의 경우 AUTO_INCREMENT를 사용하여 기본키를 생성한다.
|
SEQUENCE
|
데이터베이스의 특별한 오브젝트 시퀀스를 사용하여 기본키를 생성한다.
|
TABLE
|
데이터베이스에 키 생성 전용 테이블을 하나 만들고 이를 사용하여 기본키를 생성한다.
|
Mysql은 아래의 test클래스의 테이블을 만들 때 테이블 키 생성 전략을 디폴트로 지정하게 되면 table을 전략으로 생성하게 된다.(자세한건 아래 참조글 정독 바랍니다..)
그래서 위의 그림1과 같이 hiberante_sequence 테이블을 생성하게 된다.
그래서 나는 기본키 매핑 전략에 Auto -> Identity 전략으로 바꿔 사용하고 진행 중...
반응형
'BackEnd(Java) > Spring Data JPA' 카테고리의 다른 글
생성 시간, 수정 시간 자동으로 값 넣기 (0) | 2022.03.29 |
---|---|
JPA - Mysql 컬럼명 대문자 생성이 안될 때 (0) | 2022.03.24 |
JPA - Mysql 컬럼 매핑 (0) | 2022.03.24 |
@Not Null vs @Column(nullable = false) 차이 비교 (0) | 2022.03.24 |
영속성 컨텍스트와 Transaction의 관계 (0) | 2022.03.23 |