Last updated
Last updated
The primary key, or the property or field of a composite primary key, must be one of the following Java language types: - Java primitive types - Java primitive wrapper type - sjava.lang.String - java.util.Date (the temporal type should be DATE) - java.sql.Date - java.math.BigDecimal - java.math.BigInteger
JPA ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด primitive types ๋ ํ์ฉํ๊ณ ์์ต๋๋ค.
ํ์ง๋ง
We recommend that you declare consistently-named identifier attributes on persistent classes and that you use a nullable (i.e., non-primitive) type.
์ผ๋ฐ์ ์ธ ๊ตฌํ์ฒด์ธ Hibernate์ ๋ฌธ์์ ๋ช ์์ ์ผ๋ก non-primitive type์ ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์์ต๋๋ค.
id๋ฅผ primitive type์ผ๋ก ํ๋ฉด 0๊ณผ null์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
primitive type์ ๊ธฐ๋ณธ ๊ฐ์ด 0์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ null์ด ํ์ฉ๋๋ wrapper type์ ํ์ฉํด์ผ ์ ๋๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด ID๊ฐ ์๋ ๊ฐ์ ์ ํ์ ์ฌ์ฉ์ ๋ํ ๋ช ๋ฐฑํ ๊ทผ๊ฑฐ๋ฅผ ์ฐพ๊ธฐ ํ๋ค์์ต๋๋ค. ํ์ง๋ง ์ ์ ๋น์ทํ ๊ณ ๋ฏผ์ ํ ์คํ ์ค๋ฒ ํ๋ก์ฐ์ ์ง๋ฌธ์ ์ฐพ์๊ณ ๊ทธ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์๊ฐ์ ์ข ๋ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
๋ฐ์ดํฐ์ null ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์์ด์ผ ํฉ๋๋ค.
null ๋ฐ์ดํฐ๋ ๊ฐ์ ธ์ฌ ์ ์์ด์ผ ํฉ๋๋ค.
ํน์๋ null ๋ฐ์ดํฐ์ ์กด์ฌ ์์ฒด๋ฅผ ๋ฌธ์ ๋ก ๋งํ ์ ์์ง๋ง, ๊ฒฝํ์ ์ค๋ฌด DB์๋ null์ธ ์ปฌ๋ผ์ด ๊ฝค ์กด์ฌํ์ต๋๋ค.
์์ ํ๋์ boxing-unboxing์ ๋ฐฐ์ ํฉ๋๋ค.
boxing-unboxing ์ด์๋ ๋ฐ๋ณต๋ฌธ๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ ๋ ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ปดํจํ ๋ฅ๋ ฅ์ด ์ถฉ๋ถํ ์ ๋ ดํด์ง๊ณ ๋์์ก์ต๋๋ค.
์ฝ๋ฉ ์คํ์ผ์ ์ผ๊ด์ฑ์ ๊ฐ์ ธ๊ฐ ์ ์์ต๋๋ค.
์ผ๋ถ @Ttransient
ํ๋์ ๋ํด์๋ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
์์ ๊ฐ์ ์ด์ ๋ก ์ ๋ Entity์ ๋ชจ๋ ํ๋๋ฅผ wrapper type์ผ๋ก ์ฌ์ฉํ๋ ๊ฑธ ์ ํธํฉ๋๋ค.