Backend/Database

[JPA] hibernate_sequence 테이블 없애기

mopil 2022. 8. 22. 02:05
반응형

# 서론

JPA와 MySQL 디비를 사용하면서 궁금했던 hibernate_sequence 테이블에 대하여 정리한다.

 

# hibernate_sequence 의 정체

이 테이블의 정체는 칼럼값으로 예측 가능하듯, 디비의 PK를 생성해주는 테이블이다.

엔티티 제작시 @GenerateValue를 그냥 아무 값을 넣지 않으면, 생성 전략이 AUTO 로 설정된다.

 

이러면 hibernate_sequence 테이블이 생기고, 여기서 값을 하나씩 읽어가면서 PK를 생성한다.

 

MySQL은 디비 내부적으로 auto increment를 지원하므로, 순서 기록용 테이블을 사용할 필요가 없다.

 

@GenerateValue 전략을 IDENTITY로 설정하면 된다. 이렇게 하면 전역적으로 통용되던 PK 순서도 테이블 독립적으로 변경된다.

 

이렇게 하면 시퀀스 테이블에 접근해서 PK값을 늘리고, 그 값을 또 ID 값으로 넣는 행위를 하지 않아도 되서 쿼리가 줄어든다.

 

그리고 보기 싫은 hibernate_sequence 테이블도 사라진다.

반응형