728x90

Controller 컨트롤러에서 만든 UseCase 객체를 구현하기


 

Service 클래스는 Usecase를 상속받은 구현체로 비즈니스 로직 동작을 위해 존재한다.

@Service
@Transactional
public class RegisterMembership implements RegisterMembershipUseCase {
   @Override
    public Membership registerMembership(RegisterMembershipCommand command) {
        return null;
    }
}

Service의 비즈니스 로직은?


Command를 통해서 UseCase는 Membership 객체를 반환하는 registerMember (회원 등록) 메서드를 가지고 있다.

그러므로, Service의 목적은 생성된 Membership 객체를 DB에 전달하는 것이다.

그러나 Hexagonal 아키텍처이기 때문에 Port와 Adapter를 통해서 외부 시스템인 DB에 접근할 수 있다.

DB와 매핑하기 위한 관계 설정


다시 의존성 관계를 설정하는 과정에서 Port 역시 실제 데이터베이스와 직접 연결되지 않고 Adapter를 통해 의존관계를 가진다.

public interface RegisterMembershipPort {

    MembershipJpaEntity createMember(
            Membership.MembershipName membershipName,
            Membership.MembershipAddress membershipAddress,
            Membership.MembershipEmail membershipEmail,
            Membership.MembershipIsValid membershipIsValid,
            Membership.MembershipIsCorp membershipIsCorp
    );
}
public class RegisterMembershipAdapter implements RegisterMembershipPort {


    @Override
    public MembershipJpaEntity createMember(
            Membership.MembershipName membershipName,
            Membership.MembershipAddress membershipAddress,
            Membership.MembershipEmail membershipEmail,
            Membership.MembershipIsValid membershipIsValid,
            Membership.MembershipIsCorp membershipIsCorp
    ) {
        
    }
}

 

Port와 Adapter의 createMember 메서드는 도메인 객체를 받아와 JpaEntity를 반환한다. 

이 Jpa엔터티가 DB와 매핑하기 위한 핵심 기술로 7편에서 구현할 예정이다.

+ Recent posts