Published on

엔티티에서 식별자를 선택하는 방법

Authors
  • avatar
    Name
    손예지(Liv)

스프링부트에서 식별자 사용하기

프로젝트에서 PK 값에 UUID로 구성하는 요구사항이 있어, 어떤 경우에 AutoIncrement 혹은 UUID를 사용해야 하는지 알아봤습니다.

스프링부트에서 엔티티를 구성할때 AutoIncrement 방식은 JPA가 자동으로 숫자를 부여합니다. 반면 UUID는 랜덤으로 구성되거나, 혹은 사용자가 사용하고자 하는 문자열 기반으로 생성할 수가 있습니다.

어떤 경우에 사용해야 할까 ?

어떤 경우에 UUID를 사용해야할지에 대해서 예시를 튜터님께 여쭤봤을때 보안상의 이슈가 있을 수 있다고 말씀해주셨습니다. 예를들어 사용자에게 노출되는 값의 경우 URL에서 숫자가 순서대로 노출된다는 것을 알게되면 사이트를 크롤링 할때 단순한 반복문으로 데이터를 쉽게 가지고 올 수 있습니다.

알게된점

식별자를 구현할때 PK 값은 항상 AutoIncrement만 생각했는데, UUID라는 또 다른 전략이 있다는 것을 알게되었습니다. 현재 진행하는 프로젝트에서 사용자에게 노출되는 주문번호를 어떻게 관리할지에 대한 고민이 있었는데, 보안을 고려하면서 동시에 관리할 수 있는 값에 대해서 고민해 볼 수 있었습니다.

참고자료:
[Spring boot] JPA PK 매핑 전략, Auto Increment Key와 UUID 선택의 기준