DTO(Data Transfer Object, 데이터 전송 객체)는 프로세스 간에 데이터를 전달하는 객체이다.
1. Entity 내부 구현 캡슐화 가능
2. 화면에 필요한 데이터 선별 가능
3. 순환참조 방지
4. validation 코드와 모델링 코드 분리 가능
- 값 형식 데이터 : integer, float, charactor 등의 기본 타입
- Object 형식 데이터 : 메모리 주소값을 가진 데이터
데이터는 위와 같이 크게 2가지로 나뉠 수 있는데, 이 중 저장/전송 가능 데이터는 값 형식 데이터이다.
자바 입출력은 스트림이라는 데이터 통로를 이용하는데, 객체는 byte 형태가 아니라서 스트림을 통해 파일을 저장하거나 네트워크 전송이 불가능하다. 따라서 객체를 스트림을 통해 입출력하기 위해 byte 형태로 전환할 필요가 있는데, 이를 직렬화(serialization)라고 한다.
반대로 네트워크나 저장소에서 byte 스트림을 가져와 객체로 변환하는 것을 역직렬화(Deserialization)라고 부른다.
(메모리 구조상 데이터를 순차적으로 읽어 오는 방법이 가장 빠르기 때문에 RDBMS 구조와 달리 일직선의 연속적인 값의 형태를 가지게 되어 직렬화라는 이름이 붙음)
JVM 메모리에 머물러있는 객체를 영속화(Persistence)할 필요가 있을 때 사용된다.
-> 저장/전송시 파싱할 수 있는 데이터를 만들기 위해 사용