serializable

#java

  • JVM ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ JVM ์™ธ๋ถ€์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Byte ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

  • ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” primitive ํ•œ 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