2024. 8. 13. 18:17ㆍ[Spring_gradle]
1. DTO (data transfer object)
먼저 DTO는 데이터 전달용 (계층 간 데이터를 전달하기 위한 객체)으로 본다.
web layer <-> service layer 간 데이터 전달한다.
getter/setter, 생성자 메서드를 포함하며, 로직이 전혀 없다.
DB구조보다는 전송할 데이터를 필요한 부분만 선택해서 단순화한 구조를 따른다.
2. ENTITY
ENTITY는 DB 테이블 구조를 직접 반영하는 객체이기 때문에, DB의 CRUD 작업에 사용된다.
한 행(ROW)에 해당하는 데이터를 담고 있다.
비지니스 로직을 포함하지 않는다.
3. 데이터 전달 방식
1) 클라이언트에서 DTO 형태로 데이터 전송
2) 서버에서 DTO 수신
- 클라이언트로부터 DTO형태 데이터를 수신 (전달용 객체O, DB형태 객체X)
3) DTO를 ENTITY로 변환
- 수신한 DTO데이터를 기반으로 ENTITY객체 생성 (하나의 ROW에 들어갈 데이터가 생성되는 곳)
public User convertToEntity(UserDTO userDTO) {
User user = new User();
user.setUsername(userDTO.getUsername());
user.setEmail(userDTO.getEmail());
// 필요한 다른 필드 설정 및 유효성 검사
return user;
}
4) ENTITY를 DB에 저장
repository.save(entity)
5) DB에서 ENTITY 조회하거나 데이터처리(수정/삭제 등)를 할 때, DTO로 변환
public UserDTO convertToDTO(User user) {
UserDTO userDTO = new UserDTO();
userDTO.setUsername(user.getUsername());
userDTO.setEmail(user.getEmail());
// 필요한 다른 필드 설정
return userDTO;
}
이와같이 도메인(ENTITY)과 DTO를 분리하는 이유는 1) DB에 함부로 값이 변경되지 않도록 2) DTO(데이터처리용)를 사용할 때마다 DB에 있는 내용을 다 호출하면 처리시간이 오래 걸리기 때문이다.
이러므로 DTO에서 도메인을 받아오고 사용할 데이터들만 부분적으로 사용하면 된다.
요약
- 클라이언트는 DTO를 사용해 서버로 데이터를 전송합니다.
- 서버는 DTO를 받아 ENTITY로 변환한 후, 데이터베이스에 저장합니다.
- 데이터를 조회할 때는 ENTITY를 DTO로 변환하여 클라이언트로 전송합니다.
'[Spring_gradle]' 카테고리의 다른 글
[JWT] 세션 인증 방식과의 차이점부터 구현하기까지 (0) | 2024.08.22 |
---|---|
[Spring Security] 개념부터 구현까지 (0) | 2024.08.21 |
[RDS DB] 연결 실패_timed out (0) | 2024.08.19 |
[ERD] (0) | 2024.08.13 |
[AWS_RDS] 클라우드 서버 환경에서 RDS인스턴스 DB 생성 및 세팅 (0) | 2024.08.12 |