참고용이기 때문에 간단하게 사용법하고 주의사항만 정리하겠습니다.
사용법
- Entity
- @GeneratedValue 어노테이션을 설정
- @Column을 BINARY(16)으로
- 타입을 UUID로
@Id
@GeneratedValue
@Column(columnDefinition = "BINARY(16)")
private UUID id;
- 결과
- UUID에서 대시(-)를 제외한 나머지 32자리 문자열이 자동생성되어 저장됩니다.
주의사항
- @Column을 직접 BINARY(16)으로 정의한 이유는 디비마다 다르겠지만 JPA로 스키마 자동생성하면 컬럼타입이 BINARY(255)로 정의됩니다. 이러한 경우 UUID는 255를 제외한 16만큼의 자리를 차지하는데 자리를 채우고 남은 공간을 특정 값으로 채워버리는 DB가 존재할 수 있습니다.
- 예를들어 MySQL같은 경우, 공백을 0으로 채워버리기 때문에 UUID00000000000이런식으로 저장됩니다.
- 이러한 오류를 방지하고자 UUID가 차지하는 크기인 BINARY(16)만큼을 크기로 설정해주는 것입니다.
- 따로 Generator를 설정해서 사용하지 않고 @GeneratedValue만 적은 이유
- 기본적으로 @GeneratedValue는 AUTO 전략을 선택합니다.
- 아래의 그림과 같이 AUTO일 경우 Data Type이 UUID면 자동적으로 UUID Generator로 설정됩니다.
'Spring Framework > JPA' 카테고리의 다른 글
엔티티 저장 시 연관 엔티티의 아이디로만 연관관계 설정하는 법 (0) | 2022.07.15 |
---|---|
Transaction (트랜잭션) (0) | 2022.06.10 |
엔티티 매핑 (0) | 2022.06.10 |
영속성 관리 (0) | 2022.06.10 |
데이터베이스 방언 (Dialect) (0) | 2022.06.10 |
댓글