📕 UUID란?
- 네트워크 상에서 고유성이 보장되는 id를 만들기 위한 표준 규악
- Univeraslly Unique Identifier의 약어이고 범용 고유 식별자라고 함
- 주로 분산 컴퓨팅 환경에서 사용되는 식별자
- 128비트의 숫자이며, 32자리의 16진수로 표현됨
- 8자리-4자리-4자리-4자리-12자리 패턴의 하이픈을 집어 넣어 5개의 그룹으로 구분
📕 UUID 사용
- 업로드된 파일명의 중복을 방지하기 위해 파일명을 변경할 때 사용
- 첨부파일 파일 다운로드시 다른 파일을 예측하여 다운로드하는 것을 방지하는데 사용
- 일련번호 대신 유추하기 힘든 식별자를 사용하여 다른 컨텐츠의 임의 접근을 방지하는데 사용
📕 Java에서 UUID 사용
- Java에서는 무작위 랜덤 생성 버전인 UUID 4버전과 해쉬를 이용해 생성하는 3버전이 있다.
- 3버전 - nameUUIDFromBytes
- 4버전 - randomUUID
[ Java UUID version 4 예시 ]
import java.util.UUID;
public class UUIDTest {
public static void main(String[] args) {
UUID one4 = UUID.randomUUID();
UUID two4 = UUID.randomUUID();
System.out.println("UUID version4 One: " + one4.toString());
System.out.println("UUID version4 Two: " + two4.toString());
}
}
UUID version4 One: 86ce7ee6-f6d2-4f16-bce9-712d9c48df72
UUID version4 Two: 79e28167-f744-42a7-b9b2-9c701b83ad34
📕 활용 예시 (인스타그램 클론코딩 중)
UUID 생성하고 붙여서 업로드 하는 사진 파일명의 중복발생을 방지하였다.
public void uploadImage(ImageUploadDto imageUploadDto, PrincipalDetails principalDetails) {
UUID uuid = UUID.randomUUID();
String imageFileName = uuid+"_"+imageUploadDto.getFile().getOriginalFilename();
log.info(imageFileName);
Path imageFilePath = Paths.get(uploadFolder+imageFileName);
try {
Files.write(imageFilePath, imageUploadDto.getFile().getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}
참고