Springboot

[JPA] @GeneratedValue의 Auto_increment 미적용 될때

25G 2023. 8. 17. 19:22

미적용 예시 상황

a테이블과 b테이블을 각각 save를 사용해서 insert 하게되면 id값이 합쳐서 올라가는 현상이 있습니다.

@GeneratedValue를 사용하면 default값으로 AUTO가 적용되고, AUTO는 IDENTITY를 기본으로 사용한다고 알고 있었는데, 실제로 적용되는 전략은 IDENTITY가 아닌것 입니다.

실제 ddl 쿼리 내용을 보면 sequence 전략이 찍혀있다

시퀀스 전략이란

시퀀스 전략은 모든 엔티디에 대한 id값을 시퀀스 테이블 하나에서 통합적으로 관리하는 전략이다 그래서 id값이 하나의 엔티티처럼 증가하는 현상이 발생한것.

IDENTITY 전략을 적용하기 위해선?

yml 혹은 propertice에 다음과 같은 설정을 추가해 줘야한다.

spring.jpa.hibernate.use-new-id-generator-mappings=false 

hibernate5가 auto의 전략을 table로 새롭게 변경했고 스프링 부트2.x 로 들어오면서 hibernate의 새로운 전략을 따르는 쪽으로 변경 되었다.
그렇기 때문에 위 설정을 해 줘야한다.