비즈니스 프로세스를 호출하는 서비스가 있다고 가정 해 봅시다. 이 프로세스는 데이터 계층을 호출하여 데이터베이스에 유형 A의 개체를 만듭니다.
그런 다음 다른 클래스의 데이터 계층을 다시 호출하여 데이터베이스에 B 유형의 인스턴스를 만들어야합니다. 외래 키를 위해 A에 대한 정보를 전달해야합니다.
첫 번째 방법에서는 객체를 만들고 (상태 수정) 단일 방법으로 ID (쿼리)를 반환합니다.
두 번째 방법에는 저장 용 (createA)과 쿼리 용 (getId)의 두 가지 방법이 있습니다.
public void FirstMethod(Info info)
{
var id = firstRepository.createA(info);
secondRepository.createB(id);
}
public void SecondMethod(Info info)
{
firstRepository.createA(info);
var key = firstRepository.getID(info);
secondRepository.createB(key);
}
내 이해에서 두 번째 방법은 명령 쿼리 분리를보다 완전히 수행합니다. 그러나 방금 만든 객체를 얻기 위해 데이터베이스를 쿼리하는 것은 낭비적이고 반 직관적입니다.
그러한 시나리오로 CQS를 어떻게 조정합니까?
두 번째 방법 만 CQS를 따르고 있다면이 경우에 사용하는 것이 바람직합니까?