Spring

[Spring ] UUID, PK 로 사용하기

소범범 2023. 1. 30. 22:28

 💡 UUID의 사용 방법

  • 먼저 UUID를 생성한다.
  • UUID는 MySQL에서 정렬할 수 없기 때문에 PK로 사용하기 위해서는 재조합(UUID 순서의 재조합)을 위해 데이터를 수정한 후 DB에 넣는다.
  • DB에 UUID가 저장될때는 binary 형식으로 저장된다.(저장공간의 효율성을 위해)
  • DB에서 UUID를 조회할때는 HEX 형식으로 바꿔서 조회해야한다. → 그렇지 않으면 HEX화 되지 않은 binary의 값을 나타내게 된다. (DB 툴에 따라 binary형식이 표현되는 형식이 다를 수 있다. )
  • HEX 형식으로 조회한 UUID 를 WHERE 조건등에 사용하기 위해서는 UNHEX를 사용해서 binary 타입으로 변경해야한다.
  • query 예시
SELECT HEX(PK) from extable 
SELECT * FROM extable WHERE PK = UNHEX('~~~')

 

💡 여기서 발생하는 궁금증 (?)

→ 그렇다면 JPA나 Querydsl 을 사용하여 UUID를 조회 할 때는 어떻게 조회 해야하는가?

Solution : 데이터를 받거나 입력할때 import java.util.UUID 형식으로 사용하면 된다.→ DB Connection 시 JPA가 가지고 있는 컨버터가 Binaly타입과 HEX타입의 컨버팅을 자동으로 진행한다.

 

 💡 UUID를 왜 사용할까?

  1. 데이터베이스가 여러 개로 분리 되어 사용 되면서, 다시 합쳐 져서 사용 되는 경우
  2. 키를 회득하는데 있어서 종속적이지 않다
  3. 보안적인 면이 상대적으로 안전하다.
  4. 업무적인 고유한 값 또는 본질식별자 값으로 사용할 수 있다.

 

referance

https://hoing.io/archives/5248