도메인 주도 설계 - 챕터5 레포지토리

BackEnd_Ash.log·2023년 6월 20일
0

nestjs

목록 보기
10/12

데이터와 관계된 처리를 분리하자 -레포지토리

레포지토리는 저장 공간이다.

이는 값객체와 엔티티와 연관이 없어보일수도 있겠지만,
전혀 연관이 없는것은 아닙니다.

레포지토리 란 ?

레포지토리는 저장 공간이다.

이는 값객체와 엔티티와 연관이 없어보일수도 있겠지만,
전혀 연관이 없는것은 아닙니다.

값 객체

  • 도메인의 특정 개념을 나타내는 불변하고 변경 불가능한 객체
  • 중요한 속성이나 개념을 표현
  • 비즈니스 규칙을 캡슐화 하는데 사용
  • 동등성을 기반으로 동일성을 판단하며, 값 객체 간에는 동일한 값을 가진다면 서로 동일하다고 판단

엔티티

  • 개별적으로 식별이 가능하다.
  • 상태와 동작을 가지는 객체이다.
  • 영속성을 가지며, 데이터베이스에 저장되고 조회될 수 있다.

리포지토리

  • 엔티티의 영속성을 관리하는 인터페이스
  • 도메인 객체를 저장하고 복원
  • 도메인과 데이터베이스 간의 인터페이스로 동작한다.
  • 리포지토리의 책임은 도메인 객체를 저장하고 복원하는 것인데 이 책임을 퍼시스턴시라고 한다
namespace _04
{
    class UserService
    {
        private IUserRepository userRepository;

        public UserService(IUserRepository userRepository)
        {
            this.userRepository = userRepository;
        }

        public bool Exists(User user)
        {
            var found = userRepository.Find(user.Name);

            return found != null;
        }
    }
}

  • Domain Model Layer 에서는 저장하는 방법에 대해서 관심을 갖고,
  • Infrastructure Layer 에서는 실제로 어떻게 저장하는지에 대해서 중점을 둔다.
profile
꾸준함이란 ... ?

0개의 댓글