원래 id 컬럼을 String(UUID)
로 쓰고있었는데 질문을 작성하는 순서대로 넘버링을 할 필요성이 있어서 PK가 아닌컬럼에 시퀀스를 적용해보았습니다.
1. JPA Table Mapping
@Entity
@Getter
public class Question {
@Id
String id; // 저장 형식: question_randomUUID
// 넘버링 컬럼 추가
@Column(unique = true, nullable = false, insertable = false, updatable = false)
private int initOrder;
...
}
DB의 테이블과 매핑할 컬럼을 추가해줍니다. int
, Long
둘 다 가능합니다.
2. 테이블 생성
// 테이블 새로 생성
CREATE TABLE IF NOT EXISTS question (
id VARCHAR(80) NOT NULL,
init_order SERIAL,
...
);
// 기존 테이블에 SERIAL 컬럼 추가
ALTER TABLE question ADD init_order SERIAL;
1번에서 int
자료형을 선택하셨다면 SQL에서는 SERIAL
로 선언해주시고, Long
자료형을 선택하셨다면 BIGSERIAL
로 선언해주시면 됩니다.
형식 | 크기 | 범위 | 별칭 |
---|---|---|---|
SMALLSERIAL | 2바이트 | 1 ~ 32,767 | SERIAL2 |
SERIAL | 4바이트 | 1 ~ 2,147,483,647 | SERIAL4 |
BIGSERIAL | 8바이트 | 1 ~ 9,223,372,036,854,775,807 | SERIAL8 |
3. 등록 결과
DB에 등록된 값을 확인해보면 등록시점에 시퀀스가 적용되어 값이 알맞게 들어간것을 확인할 수 있습니다.
'BackEnd' 카테고리의 다른 글
[Spring+Vue] 나이스 본인인증 API 구현하기3 (0) | 2025.02.03 |
---|---|
[Spring+Vue] 나이스 본인인증 API 구현하기2 (0) | 2025.01.21 |
[Spring+Vue] 나이스 본인인증 API 구현하기1 (0) | 2025.01.16 |