바이너리화 참고 - https://hijjang2.tistory.com/855?category=882384
개념은 할당된 클래스를 바이너리화하는 것을 직렬화라고 합니다.
이 직렬화를 하는 이유에 대해서는 클래스의 상태를 저장 혹은 소켓 통신을 통해 전송하기 위해서 사용합니다.
최근에는 Json형태로 데이터를 저장하는 경우가 많아서 직렬화를 잘 사용하지 않는데 Json형태로 저장하는 것은 Class에서 취득할 수 있는 부분까지 저장하는 것이고 private까지 저장하는 것은 아무래도 힘듭니다.
뭐 하고자 하면 Reflection을 통해서도 할 수 있겠지만, 그렇게 하는 것보다는 직렬화를 해서 클래스의 상태를 저장하는 것이 더 효율적이라고 할 수 있습니다.
직렬화 단점
직렬화는 클래스의 상태를 가장 편하게 데이터화 할 수 있으나 몇가지 단점이 있습니다.
첫번째는 이 직렬화된 데이터를 메모장에서 열어보면 사람이 이해하기 힘든 구조로 되어있습니다. ★★★★★★★★★★즉, 직렬화된 데이터는 역직렬화를 하기 전까지는 데이터를 알 수가 없습니다.★★★★★★★
그의 반해 json은 String형태로 되어 있기 때문에 메모장으로 열어도 확인이 가능하고 직접 수정도 가능합니다. 직렬호 데이터는 아무래도 그게 힘드네요.
두번째는 플렛폼의 호환성을 좋지 않습니다. 즉, java에서 직렬화 시킨 데이터는 C#에서 역직렬화가 되지 않습니다. 정확하게는 되지 않는 것은 아닙니다만, 정보의 유실이 발생할 수 있습니다.
그리고 클래스가 변경되면 역직렬화시에 데이터 유실이 생기기 때문에 직렬화를 잘 사용하지를 않습니다.
결과
'■ JAVA > Study' 카테고리의 다른 글
[Java] XML를 Xpath를 이용하여 데이터를 취득하는 방법(XPathFactory) (0) | 2020.10.10 |
---|---|
[Java] Jsoup를 이용해서 XML파일(HTML)을 다루는 방법 ★ (0) | 2020.10.10 |
[Java] 바이너리(Binary)란 무엇인가? (0) | 2020.10.09 |
[Java] Compare 함수, compareTo() 사용법 - 비교를 하는 거? (0) | 2020.10.09 |
[JAVA] StringBuilder와 StringBuffer의 차이 (0) | 2020.10.09 |