serializable
#java
JVM ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋, ๋ฐ์ดํฐ๋ฅผ JVM ์ธ๋ถ์์๋ ์ฌ์ฉํ ์ ์๋๋ก
Byte
ํํ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋งํ๋ค.Java ์ง๋ ฌํ๋ ๋น๊ต์ ๋ณต์กํ ๊ฐ์ฒด๋ ํฐ ์์ ์์ด
java.io.Serializable
์ธํฐํ์ด์ค๋ง ๊ตฌํํด์ฃผ๋ฉด ๊ธฐ๋ณธ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ฌ์ฉํด๋ ์ง๋ ฌํ/์ญ์ง๋ ฌํ ๊ฐ๋ฅ๋ง์ฝ [[transient]] ๋ฅผ ์ ์ธํ๋ฉด, ๊ฐ์ฒด๊ฐ ์ง๋ ฌํ ๋์ง ์๋๋ค.
NonSerializableException
์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ์ง๋ ฌํ ๋์์์ ์ ์ธํ๊ณ ์ถ์ ๊ฐ์ฒด์๊ฒTransient
๋ฅผ ์ ์ธํด์ฃผ๋ฉด ํด๋น ์ค๋ฅ๋ฅผ ํด๊ฒฐํ ์ ์์.
์ ์ฌ์ฉํ ๊น?
์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์๋ ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ํด์
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฃผ์ ๊ฐ์ด ์๋, ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํ ํ์ฌ ์ ๋ฌํ๋ฉด, ์๋๋ฐฉ์ ์ญ์ง๋ ฌํ ํ์ฌ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ์ ์๊ฒ ๋จ.
๋ค์ ๋งํด์, ์ ์ก ํน์ ์ ์ฅ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์ง๋ ฌํ๋ฅผ ์ฌ์ฉํจ.
serialVersionUID ?
JPA entity ์ ์ํ ๋, Serializable ์ ๊ตฌํํ ํ์๊ฐ ์์๊น?
if our object is to leave the domain of the JVM, it'll require serialization.
JVM์์๋ง ์ฌ์ฉ๋๋ ๊ฒ ์๋๋ผ, ์ธ๋ถ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ์ก๋๊ฑฐ๋ ํน์ View์ ๋๋ฉ์ธ ๊ทธ๋๋ก ๋ณด์ฌ์ง๊ฒ ๋ ๊ฒฝ์ฐ, ํด๋น ์ธํฐํ์ด์ค ๊ตฌํ์ด ํ์ํ๋ฏ.
when describing mapping in Hibernate, notes that the referenced field must be serializable when we use referencedColumnName from the @JoinColumn
@JoinColum
์ด๋ ธํ ์ด์ ์ referencedColumnName ์ ์ฌ์ฉํด์ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ๋ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ํค๊ฐ ๋ณตํฉ ์ํฐํฐ์ผ ๊ฒฝ์ฐ, ํด๋น ์ํฐํฐ๋ ๋ฐ๋์ serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผํจ.
๊ฒฐ๋ก
์ฌ๋ฌ๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐ์ ธ๋ดค์ ๋, ๊ธฐ๋ณธ์ ์ผ๋ก JPA Entity์ serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋๊ฒ ์ข์๋ฏ ์ถ์.
๊ทธ๋ ์ง๋ง ์์ ํ๋ค๊ณ ํ์ค ํ ์ ์์ ๊ฒฝ์ฐ์ ํํฐ๋ง์ ํด์ผํจ ์ฐธ๊ณ
๊ฐ๋ฅํ Json์ ํตํด ํ๋ก๊ทธ๋จ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋๊ฒ ๋์์ง๋..?
์ฐธ๊ณ
https://www.baeldung.com/java-serialization
https://www.baeldung.com/java-serial-version-uid
https://madplay.github.io/post/java-serialization
https://www.baeldung.com/jpa-entities-serializable
Last updated