본문 바로가기
카테고리 없음

[JPA] @GeneratedValue - TABLE

by diaryDev 2025. 1. 3.
728x90

TABLE

- 키 생성 전용 테이블을 하나 만들어 DB 시퀀스를 흉내내는 전략

- @TableGenerator 필요

 

- 장점 : 모든 DB에 적용 가능

- 단점 : 성능

create table MY_SEQUENCES (
	sequence_name varchar(255) not null,
	next_val bigint,
	primary key ( sequence_name )
)

 

@Entity
@TableGenerator(
	name = "MEMBER_SEQ_GENERATOR", 
	table = "MY_SEQUENCES", 
	pkColumnValue = "MEMBER_SEQ", 
	allocationSize = 1)
class Member {
	@Id
	@GeneratedValue(strategy = GenerationType.TABLE,
	generator = "MEMBER_SEQ_GENERATOR")
	private Long id;
}

 

@TableGenerator 속성

속성 설명 기본값
name 식별자 생성기 이름 필수
table 키 생성 테이블 명 hibernate_sequences
pkColumnName 시퀀스 컬럼명 sequence_name
valueColumnNa 시퀀스 값 컬럼명 next_val
pkColumnValue 키로 사용할 값 이름 엔티티 이름
initialValue 초기 값, 마지막으로 생성된 값이 기준 0
allocationSize 시퀀스 한 번 호출에 증가하는 수 (성능 최적화에 사용) 50
catalog, schema 데이터베이스 catalog, schema 이름  
uniqueConstraints(DDL) 유니크 제약 조건을 지정할 수 있다.  

 

 

 


 

 

참고

https://ssdragon.tistory.com/72

자바 ORM 표준 JPA 프로그래밍 - 기본편

728x90