개발/Project

도메인 객체지향적으로 Refactoring 하기

라니킴 2022. 2. 13. 18:22

 

도메인 주도 설계에 따르면 dto는 애플리케이션 레이어이기 때문에 Dto는 Entity에 의존할 수 있지만 Entity는 dto를 몰라야 한다.

기존에 작성해 놓은 코드를 보면 엔티티에서 dto에 의존하고 있는 부분이 여러군데 있었다.

Entity는 최대한 깔끔하게 두도록 하자.

https://brunch.co.kr/@springboot/614

1. Restaurant Entity

1.1 수정 전

 

 RestaurantService

Restaurant entity

1.2 수정 후

RestaurantService

Restaurant restaurant = requestDto.toEntity();

 

 

2. Meeting Entity

마찬가지로 Meeting Entity에서 Dto에 의존하고 있다. Entity는 Dto 존재를 몰라야 한다. Entity는 최대한 깔끔하게 두어야 한다. 

2.1 수정 전

 

2.2 수정 후

MeetingCreatRequestDto

public Meeting toEntity(User user) {
        return Meeting.builder()
                .user(user)
                .meetingTitle(meetingTitle)
                .restaurant(restaurant)
                .restaurantId(restaurantId)
                .startDate(startDate)
                .endDate(endDate)
                .meetingDate(meetingDate)
                .location(location)
                .limitPeople(limitPeople)
                .nowPeople(nowPeople)
                .content(content)
                .build();
    }