반응형
JPA에서 기본 시퀀스가 아닌, 개발자가 임의로 커스텀하여 아이디를 생성하는 방법
요약하자면,
- IdentifierGenerator 인터페이스를 구현해서 configure(), generate() 두 개의 함수를 구현 한다.
- configure - 외부에서 커스텀 ID 구현을 위해 설정한 파라미터 값을 가져와서 내부에 선언한 변수에 할당하는 역할(prefix, suffix 등등)
- generate - 커스텀한 ID를 리턴하는 역할. 보통 DB에서 시퀀스를 가져와 사용자가 지정한 형태를 입히고 리턴한다.
- 사용할 엔티티에 아래와 같은 형태로 GenericGenerator에 위에서 만든 클래스를 strategy에 넣고 이름을 지정한다. 파라미터로 사용자 임의 데이터를 넣는다. name이 key값으로 활용된다.
- GeneratedValue 어노테이션에 GenericGenerator에서 지정한 name을 generator로 넣는다.
@GenericGenerator(name = "idGenerator", strategy = "com.common.generator.IdGenerator",
parameters = {
@Parameter(name = IdGenerator.SEQUENCE, value = "sq_user_id"),
@Parameter(name = IdGenerator.PREFIX, value = "USER")
})
@GeneratedValue(generator = "idGenerator")
더 자세한건 아래 참조
https://zet-it-story.tistory.com/1
반응형
댓글