사이드 플젝으로 골프의 민족 백엔드를 맡아서 진행하고 있는데 Entity와 Dto를 자동매핑해주는 MapStruck을 사용해봤다.
데이터를 전달하는 객체이다. 즉 보여주고 싶은 데이터만 보여줄 수 있다. 예를 들어 회원엔티티를 직접 전달하게 되면 개인정보같이 보여주면 안되는 정보까지 노출되기 때문에 GetMapping을 할 때는 Dto를 꼭 사용해야 한다.
Java been 유형간의 매핑 구현을 단순화하는 코드 생성기이다.
// Map Struct
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "tbl_b_category")
@Getter
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long categoryNo;
private Long parentCategory;
private int depth;
private String name;
}
@Getter
@Setter
public class CategoryDto {
private Long categoryNo;
private Long parentCategory;
private int depth;
private String name;
}
@Mapper(componentModel = "spring")
public interface CategoryMappper {
CategoryDto categoryToCategoryDTO(Category category);
Category categoryDTOToCategory(CategoryDto categoryDTO);
}
/**
* 2뎁스 카테고리 선택시 하위 카테고리 조회
*/
public List<CategoryDto> viewParentCategory(Long categoryNo , int depth){
List<Category> categories = categoryRepository.findByParentCategoryAndDepth(categoryNo, depth);
return categories.stream()
.map(categoryMappper::categoryToCategoryDTO)
.collect(Collectors.toList());
}

이렇게 하고 조회하면 원하는 정보만 딱 볼 수 있다!
초반에 세팅해두면 나중까지 편안하게 사용할 수 있을 것 같다.