TIL

[24.07.31] Controller의 존재 발견!

DongHo 2024. 8. 1. 19:00

  • aggregate : 사용자 객체 설정
  • db : .dat or .txt로 대체
  • repository : db와 연동하는 곳
  • run : 사용자 화면 & Application
  • service : 비즈니스 로직 처리하는 곳
  • stream : db의 file stream 처리하는 곳

이제서야 알았습니다. CQRS(아직 적용 X)의 필요성을 느껴보는 프로젝트였구나!


1. Controller의 필요한 이유

  1. POST 도메인에서 MEMBER 도메인의 정보가 필요하면 POST의 service층에서 POST controller에게 요청을 보낸다.
  2. POST controller에서 응답하기 위해 자신의 (controller -> service -> repository -> db -> repository -> service -> controller)로 해결을 한 후 MEMBER service에게 응답을 한다. (추후에 이 데이터를 json형식으로 주고 받는다.)
  3. 이후 MEMBER service에서 요긴하게 활용.

물론 이게 Controller의 필요 이유는 아니다. 그 역할 중 하나이다.


2. 그럼 각 도메인에서 Repository들을 Interface로 관리하면 안되나?

  1. 그래서 Spring에 그런 Interface가 있다!!
  2. 그 인터페이스는 기본적인 쿼리문을 작동시켜주는데 조회할 때 문제가 된다.
  3. 조회할 때 가져오고 싶은 값, 형식 등이 다 다를 수도 있으니 이럴때 동적조회를 사용한다.
  4. 이 동적 조회를 위해서는 우리가 코드를 직접 작성해서 사용해야한다.

3. CQRS가 필요한 이유!?

위와 같은 것들을 관리하기 위해 CQRS라는 개념이 생긴 것 같다.

CQRS는 앞으로 더 알아봐야 할 듯 싶다. 일단 지금 시점에서는 이 정도만 알고 넘어가자!