TABLE 전략
- 정의
- 키 생성 전용 테이블 활용하여 DB 시퀀스 모방
- 장점
- DB안 가리고 모두 활용가능
- 단점
- SELECT 로 값을 조회 , UPDATE 로 값을 증가시킴.
- 시퀀스에 비해 DB 추가 통신이 필요하다는점..
- SELECT 로 값을 조회 , UPDATE 로 값을 증가시킴.
- 작동 방식
- 키 생성 용도의 테이블의 생성
sequence_name
- 시퀀스 이름
next_val
- 시퀀스
create table MY_SEQUENCES ( sequence_name varchar(255) not null, next_val bigint, primary key (sequence_name) )
- JPA 에서 미리 값을 넣어둘 필요 X
- 자동으로 초기화됨
@TableGenerator
- 기능
- 테이블 기반의 식별자 생성 전략의 정의
- 속성
name
: 식별자 생성기 이름.
table
: 키 생성 테이블명.
pkColumnName
,valueColumnName
: 시퀀스 컬럼명과 값 컬럼명.
pkColumnValue
: 키로 사용할 값 이름.
initialValue
: 초기 값.
allocationSize
: 호출당 증가량 (최적화 용).
@Entity @TableGenerator ( name = "BOARD SEQ_GENERATOR", table = "MY SEQUENCES", pkColumnValue = "BOARD SEQ", allocationSize = 1 ) public class Board { @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "BOARD_SEQ_GENERATOR") private Long id; }
AUTO전략
@Entity
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
- 정의
- DB 방언에 따라 IDENTITY, SEQUENCE , TABLE 전략 중 하나 자동 선택
- 오라클은 SEQUENCE
- Mysql 은 IDENTITY
- 장점
- DB 변경시 코드의 수정이 필요없다!
- 주의
- SEQUENCE , TABLE 전략이 선택되면 해당 테이블 또는 시퀀스를 미리 만들어야함
Uploaded by N2T
'자바 > JPA' 카테고리의 다른 글
[4단원] 기본 키 직접 할당 전략, IDENTITY 전략 (0) | 2023.11.01 |
---|---|
[4단원] 기본키 - SEQUENCE 전략 (0) | 2023.11.01 |
[4단원] JPA 필드와 컬럼 매핑 (0) | 2023.11.01 |
[5단원] 단방향 연관관계 (0) | 2023.11.01 |
[5단원] `@JoinColumn` , `@ManyToOne` (0) | 2023.11.01 |