Entity에 Serializable을 구현하는 이유

2025. 1. 8. 16:00· 백엔드 Backend/JPA
목차
  1. Serializable 

JPA의 표준 스펙은 Entity에 Serializable을 구현하도록 되어있다.

@Data
@Entity
@Table(name = "catalog")
public class Catalog implements Serializable{
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    ...

}

 

Serializable 

객체의 직렬화를 지원하기 위한 인터페이스이다.

직렬화는 객체를 바이트 스트림으로 변환하여 저장하거나 네트워크상에서 전송할 수 있는 형태로 변환하는 과정이다.

이 인터페이스를 구현함으로써 자바의 직렬화 기능을 사용할 수 있다.

 

이러한 직렬화는 객체의 상태를 보존하고 다른 시스템 간에 객체를 공유/전송하기 위해 필요하다.

MSA의 경우 다른 마이크로 서비스의 entity를 사용하여 데이터를 주고받거나 공유해야할 수 있으므로, Entity 클래스가 직렬화 되어야 해당 객체의 상태를 전달할 수 있다.

 

✔️ 하지만

실용적인 관점에서는 Serializable을 잘 사용하지 않는다.

 

1) Entity를 그대로 보내지 않고 DTO, VO를 사용하여 전달한다.

2) JSON이나 XML등의 직렬화 대안 기술을 사용하여 데이터를 주고받는다. 

JSON의 경우 Jackson 라이브러리가 자동으로 직렬화/역직렬화를 하기 때문에 클래스 버전과 환경의 일치성을 걱정하지 않아도 된다.

 

그 외에도 클래스 로딩 및 Classpath 관리는 의존성 관리를 잘 해주어 Serializable을 사용하지 않아도 큰 문제는 잘 발생하지 않는다.

 

하지만 표준 스펙의 권장사항이기 때문에 직렬화를 추가해두면 추후 문제가능성을 사전에 방지할 수 있다.

'백엔드 Backend > JPA' 카테고리의 다른 글

JPA 설정하기 (순수 Java / Spring Data JPA)  (0) 2024.08.12
JPA의 기초 알아보기  (0) 2024.08.12
  1. Serializable 
'백엔드 Backend/JPA' 카테고리의 다른 글
  • JPA 설정하기 (순수 Java / Spring Data JPA)
  • JPA의 기초 알아보기
달래dallae
달래dallae
백엔드를 열심히 갈고 닦아서 광내봅시다 ~_~
머루랑달래랑백엔드를 열심히 갈고 닦아서 광내봅시다 ~_~
달래dallae
머루랑달래랑
달래dallae
전체
오늘
어제
  • 분류 전체보기 (54)
    • 프로젝트 Project (14)
    • 백엔드 Backend (27)
      • 기본 개념 (13)
      • 서버 Server (9)
      • 스프링 Spring (1)
      • JPA (3)
    • 데이터베이스 Database (6)
      • MySQL (1)
      • Oracle (5)
    • 언어 Language (0)
      • 자바 Java (0)
      • 파이썬 Python (0)
    • 알고리즘 Algorithm (1)

블로그 메뉴

  • 홈
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
달래dallae
Entity에 Serializable을 구현하는 이유
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.