ํฐ์คํ ๋ฆฌ ๋ทฐ
๊ฐ์
ํ๋ก์ ํธ์์ JPAํ๊ฒฝ์์ UUID๋ฅผ PK๋ก ๋์ ํ๋ ๊ณผ์ ์์ ๋ถํธํ๋ ์ ๋ค๊ณผ ๊ฐ์ ํ ๊ฒฝํ๋ค์ ๊ธฐ๋กํ๋ค.
UUID๋? + ๋์ ๊ณ ๋ฏผ
UUID(๋ฒ์ฉ ๊ณ ์ ์๋ณ์(universally unique identifier)
)๋ 128๋นํธ์ ์์ด๋ค. ํ์ค ํ์์์ UUID๋ 32๊ฐ์ 16์ง์๋ก ํํ๋๋ฉฐ ์ด 36๊ฐ ๋ฌธ์(32๊ฐ ๋ฌธ์์ 4๊ฐ์ ํ์ดํ)๋ก ๋ 8-4-4-4-12๋ผ๋ 5๊ฐ์ ๊ทธ๋ฃน์ ํ์ดํ์ผ๋ก ๊ตฌ๋ถํ๋ค. ์ด๋ฅผํ
๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
550e8400-e29b-41d4-a716-446655440000
์์์ UUID์ ๋ํด ์ด์ง ์์๋ดค๋ค.
ํ์๋ UUID๋ ๊ฑฐ์ ์ค๋ณต๋์ง ์๋ ๊ธ๋ก๋ฒ ์ ๋ํฌ ๊ฐ์ด๋ค
๋ผ๋ ๊ฒ์ ์ฃผ๋ชฉํ๊ณ , React Dom์ด ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ํ๋ ๊ธฐ์ค์ด key๊ฐ์ธ๋ฐ key๊ฐ์ ์ค๋ณต๋๊ธฐ ์ฝ๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ฃ๊ณ UUID๋ฅผ ์ฌ์ฉํ๋ค๋ฉด front์์ ์ฝ๊ฒ ์์
์ ํ์ง ์์๊น? ๋ผ๋ ์๊ฐ์ ๋์
์ ์๋ํด๋ดค๋ค. ๋ํ ๊ธ๋ก๋ฒ ์๋น์ค๊น์ง ๊ณ ๋ คํ๋ ์ํฉ์์ (์ง๊ทนํ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ด๊ธด ํ๋ค)
BINARY(16)
UUID ๋์
์ ๊ณ ๋ คํ๋ฉด์ ๊ตฌ๊ธ๋งํด๋ณด๋ DB์ BINARY ํ์
์ด padding์ด ์๊ฒจ์ UUID๋ 16byte์ด๊ธฐ์ 225byteํ์
์ผ๋ก column์ ์ ์ํ๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ๋๋ก ์กฐํํ์ง ๋ชปํ๋ ์ด์๊ฐ ์๊ธธ ์ ์๋ค๋ ๊ธ๋ค์ ๋ณด์๊ณ ,
๋ค์๊ณผ ๊ฐ์ด @Column(columnDefinition = "BINARY(16)")
๋ฅผ ์ฌ์ฉํด์ UUID๋ฅผ ์์ ํ๊ฒ ์กฐํํ๋ ๋ฐฉ๋ฒ์ ์ ํํ์๋ค.
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(columnDefinition = "BINARY(16)")
private UUID id;
ํ์ง๋ง ์ด๋ ๊ฒ ์ ์ธํด๋๊ณ ๋น์ ๊ฐ๋ฐ ๋จ๊ณ์ฌ์ DB ๋ฐ์ดํฐ์ ๋น๊ตํ๋ฉฐ ๋๋ฒ๊น ์ ํด๋ณด๋ ค๊ณ DB ํด์ ์ด์ฉํด DB ํ ์ด๋ธ์ ์กฐํํ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋์ด ์ฝ๊ฒ ์์๋ณผ ์ ์๋ ์ํฉ์ด ๋์๋ค..
๋ฌผ๋ก DB ํจ์๋ค์ ์ด์ฉํด์ ๊น๋ํ๊ฒ ๋ณผ ์ ์๊ฒ ์ง๋ง, ๋งค๋ฒ ํ๊ธฐ์๋ ๊ต์ฅํ ๊ท์ฐฎ์ ์ผ์ด๋ค.
๊ทธ๋์ ์ด๋ฅผ varchar๋ก ๋ณ๊ฒฝํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ์์ํ๋ค.
์นผ๋ผ ํ์ ์ varchar๋ก ์ ์ธํ๊ธฐ (uuid-char)
๊ตฌ๊ธ๋ง ๋์ ๋ค์๊ณผ ๊ฐ์ด @Type(type="uuid-char")
๋ฅผ ์ด์ฉํ๋ฉด varchar๋ก ์ ์ฅํ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ๊ณ ์ด๋ฅผ ์ ์ฉํด๋ดค๋ค.
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
@Type(type = "uuid-char")
private UUID id;
๊ทธ ๊ฒฐ๊ณผ๋!! ํ์๊ฐ ์ํ๋๋๋ก ์ฌ๋์ด ์์๋ณด๊ธฐ ํธํ๊ฒ ๋ณ๊ฒฝ๋์๋ค !
Reference
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Validation (0) | 2021.07.25 |
---|
- Total
- Today
- Yesterday
- kotlin s3 upload
- ํ(Heap)
- Aws Reinvent 2023
- Golang
- ํ๋ก๊ทธ๋๋จธ์ค
- AWS re:Invent 2023
- 2๋ ์ฐจ ์๋ฒ ๊ฐ๋ฐ์
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
- mysql
- ์ข์ ์์ง๋์ด
- ์ข์ ๊ฐ๋ฐ์
- grpc client
- ์ข์ ์ฝ๋๋ ๋ฌด์์ธ๊ฐ?
- golang oomkilled
- ๋ฐฑ์ค
- ์คํ/ํ
- ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS)
- mysql ์คํ ๊ณํ
- ์ข์ ๊ฐ๋ฐ์ ๋๊ธฐ
- 2023 ๊ฐ๋ฐ์ ํ๊ณ
- ์๊ณ ๋ฆฌ์ฆ
- 2023 ํ๊ณ
- HTTP
- Go
- ์ฅ์ ํ๊ณ
- ํด์
- rate limit
- ์ถ์ ์ง๋
- ๋ฑ ํฌ์๋ฌ๋ ๊ฐ๋ฐ์
- ์ฝ๋ฉํ ์คํธ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |