• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Serializable을 사용하는 이유가 뭔가요?

22.11.17 00:58 작성 조회수 1.89k

0

엔티티나 dto를 만들 때 Serializable을 상속 받던데 그 이유가 뭔가요?

  1. 찾아보니 직렬화를 하게 해준다고 하는데 DB와 직접적으로 연결되는 엔티티는 필요할 수 있다고 쳐도 dto는 애플리케이션에서 객체로 전달되니 안써도 되지 않나요? 더해서 response객체에는 적어주지 않는 이유가 궁금합니다

  2. db에 저장한다 해도 엔티티에 Serializable을 사용하지 않아도 잘 저장되는데, 그래도 사용한 이유는 직렬화가 잘 되지 않는 디비와 통신할 때는 문제가 발생할 여지가 있어서인가요?

답변 1

답변을 작성해보세요.

1

안녕하세요, 이도원입니다.

자바에서의 Serializable(직렬화)란 자바 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 메커니즘입니다. 자바 객체를 네트워크 통해 전송하거나 DB나 파일에 객체 내용을 그대로 저장할 때도 필요합니다. 말씀하신 DTO는 해당 서비스에서 내부적으로 사용되는 오브젝트이기 때문에 별도의 직렬화 작업이 필요하지 않을 수도 있지만, DTO 객체를 다른쪽에서 사용할 수도 있었기 때문에 직렬화 코드가 남겨져 있었던거 같습니다. DB 저장시 직렬화 없이 저장해도 문제가 되지 않을 수도 있지만, 해당 객체가 변경되었을 경우, DB있던 내용과 새롭게 변경된 객체의 serialVersionUID가 다르면, 사용할 수 없게 될 수도 있습니다.

감사합니다.