자바: 직렬화 (Serialization) + 예제 - 게시판 비슷한 것
직렬화란 자바의 객체를 네트워크 상에서 주고받게 하기 위하여 메모리에 저장된 객체를 바이너리 형식으로 변환하는 것을 뜻합니다. 역직렬화는 당연히 반대의 과정입니다.
이렇게 변환된 직렬화된 객체는 하드디스크에 저장하거나 네트워크 상으로 전송하여 다른 컴퓨터에서 사용하도록 할 수 있습니다.
직렬화를 하려면 대상 클래스가 Serializable 인터페이스를 구현해야 합니다. 참고로 ArrayList를 비롯한 몇몇 자바 클래스에서는 이미 Serializable 구현이 되어 있습니다. 객체 단위보다는 List 단위로 객체 직렬화-역직렬화를 하는 것이 효율적일 것입니다.
객체 직렬화-역직렬화 시 serialVersionUID가 서로 맞아야 제대로 작동합니다. 일반적으로 따로 선언하지 않아도 자바 내부에서 자동으로 버전을 생성하지만 이 경우 클래스의 잦은 내용 변경 시 문제가 발생하게 됩니다.
자바에서는 serialVersionUID를 사용자가 임의의 값으로 설정하여 내부에서 관리하는것을 추천한다고 합니다. 이클립스의 기능을 이용하면 기본 아이디를 만들거나 임의로 생성된 아이디를 사용할 수 있습니다.
예제는 자바의 List를 사용해서 게시판을 만들어보는 것입니다. 애초에 그냥 자바에서 만든 List라면 해당 객체가 프로그램이 실행되었을 때 만들어지며 프로그램이 꺼지면 메모리에서 사라지고 안에 들어있던 내용은 영원히 다시 볼 수 없을 것입니다.
그러나 직렬화를 사용하여 글이 작성되면 List의 내용을 하드디스크에 저장하고 프로그램을 껐다 다시 실행해도 하드디스크에 있는 직렬화된 파일을 읽어 List의 내용을 복구할 수 있습니다.
https://gist.github.com/ayaysir/9efdcf4be5fbbdc30421e9695bdb0819
껐다 켜도 내용이 그대로 남아있다.

