Spring JPA String prefix Sequencial Identifier

Spring JPA/hibernate에서 시퀀셜하게 증가하는 문자열 prefix가 붙은 ID 값을 지정하는 방법.

JPA Entity 에 @Id 를 지정할 때.

@GeneratedValue 를 사용하여 자동생성 하는 키값의 전략을 지정한다.
@GeneratedValue(strategy=GenerationType.AUTO)
보통은 AUTO로 하여 사용하는 DBMS에 알맞은 전략을 자동으로 선택하여 사용한다.

어쩌다 보니 문자열 prefix 가 있는 키값을 생성하는 요건이 생겼다.

* 모 기업 과제였는데 sample의 키값이 prg0011 같은 값이었다.

Table 전략을 이용하여 시퀀셜하게 생성되는 값이 필요하고
prefix를 붙여 문자열로 키값이 생성되어 바인딩 되어야 한다.

CustomTableGenerator를 정의하자.

prefix 문자열을 주입받기위한 파라미터 지정과 Long Type 지정
generate 메소드의 String prefix 키 생성 정도가 추가되었다.

Entity 클래스에는 위와 같이 GenricGenerator 를 지정하여 사용한다.

Id 생성할때는 select for update 구문으로
row lock을 잡아 업데이트 하여 사용한다.

결과 >> prg0001

github

끝!

*UUID 기반 String 키값을 쓸것이 아니라면 그냥 Long Type을 쓰자.

Written by

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store