wan-stack
데이터 표현과 전달_Entity와 DTO의 개념 본문
Entity와 DTO는 소프트웨어 개발에서 데이터를 표현하고 전달하는데 사용되는 개념
- Entity
- 데이터베이스와 관련이 있는 객체를 나타냄
- 데이터베이스의 테이블과 일치하며, 데이터베이스 테이블의 각 열은 엔터티의 속성에 해당
- 데이터베이스의 영속적인 상태를 나타내고, 데이터베이스와 직접 상호작용
- 데이터 저장, 검색 및 업데이트에 사용됨
스프링부트에서 사용코드
package com.example.blog.domain;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Article {
@Id // id 필드를 기본키로 지정
@GeneratedValue(strategy = GenerationType.IDENTITY) // 기본키를 자동으로 1씩 증가
@Column(name = "id", updatable = false)
private Long id;
@Column(name = "title", nullable = false) // title이라는 not null 컬럼과 매핑
private String title;
@Column(name = "content", nullable = false) // content라난 not null 컬럼과 매핑
private String content;
@Builder
public Article(String title, String content) {
this.title = title;
this.content = content;
}
}
2. DTO(Data Transfer Object)
- 데이터 전송을 위한 객체
- 웹 서비스 또는 API와 같은 클라이언트와 서바 간 데이터 교환을 위해 사용됨
- 엔터티로부터 데이터를 추출하고 클라이언트에게 필요한 정보만 포함되는 객체
- 데이터 전송을 최적화하고 불필요한 데이터를 제거하여 네트워크 사용량을 최소화함
- 읽기 전용이며, 주로 데이터를 클라이언트로 전송하기 위한 목적으로 사용됨
스프링부트에서 사용코드
package com.example.blog.dto;
import com.example.blog.domain.Article;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@NoArgsConstructor // 기본 생성자 추가
@AllArgsConstructor // 모든 필드 값을 파라미터로 받는 생성자 추가
public class AddArticleRequest {
private String title;
private String content;
public Article toEntity() { // 생성자를 사용해 객체 생성
return Article.builder()
.title(title)
.content(content)
.build();
}
}
차이점 (목적과 사용사례가 주요한 차이)
엔터티는 데이터베이스와의 상호 작용 및 데이터 영속성을 위한 목적으로 사용되며,
DTO는 데이터를 전송하고 클라이언트와 서버 간 데이터 통신을 효율적으로 수행하기 위해 사용됨
엔터티는 데이터베이스의 구조를 반영하며 데이터 저장 및 검색에 사용되므로 데이터베이스와 밀접한 관련
반면, DTO는 데이터 전송과 관련이 있으며 데이터 전송을 위한 최적화된 데이터 표현을 제공됨
엔터티는 종종 비즈니스 논리와 데이터베이스 논리를 결합하며, 도메인 논리를 나타내기 위해 사용됨
반면, DTO는 주로 데이터 전송 및 통신에 사용되며, 데이터 전송을 단순하게 만드는데 중점을 둠
'스프링(Spring)' 카테고리의 다른 글
| Spring과 Spring Boot의 차이점 (0) | 2023.11.30 |
|---|---|
| 자바11 설치하기[java]_OpenJDK11 // path 설정까지(시스템환경변수 편집) (0) | 2023.10.07 |
| Intellij(인텔리제이) 설치하기 (0) | 2023.10.07 |