CQS(Command-Query Separation)

개발자·2022년 3월 3일
0

Spring

목록 보기
12/18
post-thumbnail

CQS(Command-Query Separation)

Command와 Query를 분리하는 원칙. 즉, 한 메소드가 Command 또는 Query 중 하나의 역할만 하도록 한다.
Command와 Query를 분리함으로써 각 메소드의 의미를 명확하게 해준다.

- Command

결과를 반환하지 않으며, 시스템의 상태를 변경한다.
ex) reverse()

- Query

결과를 반환하며, 시스템의 상태를 변경하지 않는다.
ex) max()

예외사항

  • Stack의 pop()
    값이 제거 되는 command와 top 값을 반환하는 query가 합쳐진 것

JPA에서의 활용

  • insert : command에 속하지만 id를 반환함으로써 필요에 의해 CQS 원칙을 깰 수 있다.
  • update : command
  • select : query

=> 가능하다면 CQS를 지키되, 예외가 필요한 경우에는 허용하는 것이 좋다.



참고) CQS는 명령과 조회를 연산 수준에서 분리하는 반면 CQRS는 개체(object)나 시스템(혹은 하위 시스템) 수준에서 분리한다.
-> http://www.msaschool.io/operation/integration/integration-six/

Ref.

https://hardlearner.tistory.com/383
https://shoark7.github.io/programming/knowledge/command-and-query-method

profile
log.info("공부 기록 블로9")

0개의 댓글