복잡한 쿼리를 구성할 때 데이터 매퍼 또는 서비스 레이어 중 어느 쪽이 관리해야 하는지에 대한 의문이 생깁니다. 조건. 이 난제는 단순성과 유지 관리성 사이의 균형을 맞추려는 욕구에서 비롯됩니다.
데이터 매퍼 패턴은 fetch(), save()와 같은 메서드를 사용하여 미니멀리스트 인터페이스를 옹호합니다. , 그리고 기본 작업을 처리하는 제거()입니다. 조건은 도메인 개체 자체 내에 캡슐화되어 깔끔한 데이터 매퍼 인터페이스를 보장합니다.
$user = new User; $user->setName('Jedediah'); $mapper = new UserMapper; $mapper->fetch($user); if ($user->getFlags() > 5) { $user->setStatus(User::STATUS_LOCKED); } $mapper->save($user);
이 접근 방식을 사용하면 데이터 매퍼가 핵심 기능에 계속 집중하는 동시에 도메인 개체를 통해 복잡한 쿼리 조건을 용이하게 할 수 있습니다. 그러나 가져오기 목적으로 도메인 개체에서 데이터를 검색하려면 공개 방법이 필요합니다.
이 접근 방식에서는 서비스 계층이 구문 분석 조건을 담당합니다. 이는 여러 조건을 허용하는 일반 get() 메서드를 남겨두고 데이터 매퍼를 단순화합니다. 그러나 이로 인해 서비스 계층이 복잡한 쿼리를 처리하므로 데이터 매퍼에서 도메인 로직이 누출될 수 있습니다.
$bookService->getByAuthorAndPublisher($authorName, $publisherName);
이러한 접근 방식 간의 선택은 주관적입니다. 개발자의 취향. 그러나 고려해야 할 몇 가지 주요 요소는 다음과 같습니다.
궁극적으로 최적의 접근 방식은 다음에 따라 달라집니다. 개발팀의 구체적인 상황과 우선순위.
위 내용은 데이터 매퍼와 서비스 계층: 복잡한 쿼리의 조건은 누가 처리해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!