ZI-won-ZONE-ha / CS_JONGJIBU

CS 종지부 찍기
2 stars 0 forks source link

[DDD] MemberId에 Serializable을 붙여야 하는 이유는 무엇인가요? #10

Open worldii opened 1 year ago

worldii commented 1 year ago

P.141 중간 코드에 Serializable 이 붙여져 있는데, 붙여야 하는 기준이 궁금합니다

jjiwoning commented 1 year ago

여러 자료를 찾아보았는데 원래는 엔티티에도 Serializable을 구현하는게 JPA의 표준 스펙이라고 합니다.

그러면 왜 엔티티에 Serializable을 구현하지 않았나 생각해보면 엔티티 객체를 직렬화할 일이 없으니 구현하지 않았다고 생각합니다. (JRE 220에 직렬화가 필요하지 않은 경우에는 Serializable를 구현하지 않아도 되어있습니다.)

엔티티 객체 데이터를 바이트 형태로 어딘가로 전송하거나 저장해야되는 용도가 발생한다면 Serializable을 구현해야 될거같습니다. (직렬화하여 데이터를 저장해야 되는 경우)

붙여야 하는 이유는 결국엔 찾지 못 했지만 아마 하이버네이트 내부에서 EmbeddedId 클래스 객체를 직렬화하여 어떠한 작업을 수행하지 않을까 생각합니다.

직렬화에 대한 내용은 이펙티브 자바 12장 직렬화 파트를 참고해보세요

참고 자료

https://www.inflearn.com/questions/16570/%EB%B2%84%EA%B7%B8-%EB%AC%B8%EC%9D%98%EB%93%9C%EB%A0%A4%EB%B4%85%EB%8B%88%EB%8B%A4

https://bravenamme.github.io/2020/02/05/java-serializable/

https://techblog.woowahan.com/2550/