직렬화(Serialization)

김신영·2025년 1월 7일
0

JAVA

목록 보기
3/3
post-thumbnail

직렬화(Serialization)는 객체를 바이트 스트림으로 변환하는 과정이다.

// 직렬화 예시
public class User implements Serializable {
    private String name;
    private int age;
}

// 객체 → 바이트 스트림 (직렬화) [ implements Serializable이 수행하는 내용 ]
User user = new User("John", 30);
byte[] bytes;
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
     ObjectOutputStream oos = new ObjectOutputStream(bos)) {
    oos.writeObject(user);
    bytes = bos.toByteArray();
}
// 바이트 스트림 → 객체 (역직렬화)
try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
     ObjectInputStream ois = new ObjectInputStream(bis)) {
    User deserializedUser = (User) ois.readObject();
}

직렬화가 주로 사용되는곳

  • 1 네트워크 전송: 서버에서 소켓으로 메지시 전송
  • 2 세션 저장: Class를 직렬화시켜 세션에 저장
  • 3 캐시 저장: Class를 직렬화시켜 캐시에 저장
  • 4 파일 저장

직렬화가 필요한 상황

  • 1 분산 시스템: 분산 시스템 상에서 서버 간 객체 전송
  • 2 클러스터링: 세션 테이터를 여러 서버 간에 공유

최근 트렌드:

JSON, Protocol Buffers 등의 대체 직렬화 방식 선호
성능과 유연성이 더 좋은 대안들 사용
Java 직렬화는 레거시 시스템이나 특수한 경우에 사용

profile
공부합시다.

0개의 댓글