[스프링] JPA 엔티티와 DTO

목차

  1. JPA 엔티티
  2. DTO
  3. 엔티티와 DTO 매핑

JPA 엔티티

JPA(Java Persistence API)에서 엔티티란 데이터베이스 테이블과 매핑되는 객체를 의미합니다. 일반적으로 @Entity 어노테이션을 사용하여 정의됩니다. 엔티티는 데이터베이스와의 상호작용을 위한 메소드와 필드를 가지고 있습니다. 또한, 엔티티는 데이터베이스의 행(row)을 나타냅니다.

@Entity
@Table(name = "Product")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private BigDecimal price;
    // ...
}

DTO

DTO(Data Transfer Object)는 계층간 데이터 교환을 위한 객체로, 주로 비즈니스 계층과 프레젠테이션 계층 간에 데이터를 전달하는 데 사용됩니다. DTO는 읽기 전용 데이터를 표현하며, 필요한 정보만 포함하고 있습니다. 또한, DTO는 주로 엔티티의 부분적인 데이터나 여러 엔티티로부터 필요한 정보를 조합하여 생성됩니다.

public class ProductDTO {
    private String name;
    private BigDecimal price;
    // ...
}

엔티티와 DTO 매핑

엔티티와 DTO 간의 매핑은 보통 프로퍼티 복사, ModelMapper 사용 또는 직접 매핑 등의 방법을 통해 이루어집니다. 엔티티와 DTO 간의 매핑은 DTO에 불필요한 정보를 포함하지 않도록 주의해야 합니다.

Product product = productService.findById(productId);
ProductDTO productDTO = new ProductDTO();
productDTO.setName(product.getName());
productDTO.setPrice(product.getPrice());
// ...

결론

JPA 엔티티는 데이터베이스 테이블과 매핑되는 객체이며, DTO는 계층간 데이터 교환을 위한 객체입니다. 엔티티와 DTO 간의 매핑은 효율적으로 이루어져야 하고, 필요한 정보만을 전달하기 위해 신중하게 설계되어야 합니다.

참고 자료