일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- 자바
- 트러블슈팅
- 완탐
- BFS
- 싸피
- SWEA
- Union Find
- Spring
- 다시보기
- 코딩테스트
- database
- 코드트리
- Java
- 알고리즘기본개념
- 기본유형
- 다익스트라
- 코테
- SSAFY
- 코딩테스트실력진단
- JUnit
- 그리디
- DFS
- 그래프
- 유니온파인드
- 알고리즘
- 완전탐색
- JPA
- DP
- 부분수열의합2
- Today
- Total
목록DEV-STUDY/Design Pattern (3)
HwangHub
스프링에서는 singleton 디자인 패턴을 기본적으로 사용하고 있다. 이게 도대체 뭐길래 스프링 프레임워크에서 기본 룰로 채택하고 있고, 어떤 장점이 있을까? 객체의 생성 제어 싱글톤 디자인 패턴은 불필요한 객체 생성을 제어하기 위해 등장하였다. 어떤 객체가 불필요할까? 객체는 세상에 있는 사물 뿐만 아니라 특정 행위나 논리 등 세상의 모든 것이 객체화될 수 있다고 하였다. 이를 이해하는 게 중요하다. 자, 그럼 생각을 해 보자. "일기 쓰기"라는 객체가 있다고 해 보자. 일기 쓰기 객체는 아래 코드와 같이 간단히 표현해보겠다. public class DiaryWriting { // 일기를 작성하는 메서드 public void writeDiary(String title, String body) { Sy..
백엔드를 준비하는 정말 많은 사람들이 김영한님의 스프링 강의를 먼저 듣고 시작하게 됩니다. 근데 그 강의 내용 중에 save 메서드가 pk 값을 반환 타입으로 가지는 것을 볼 수 있습니다. 처음에는 "그렇구나" 하고 넘어갔었는데, 나중에 어디선가 CQRS를 듣고, 그리고 CQS를 듣고 이에 갑자기 의문이 생겼습니다. save메서드는 커맨드 메서드인데, 조회를 위한 pk값을 반환해주는 것은 CQS 위반이 아닌가? 많은 신입 백엔드의 스승님인 김영한 님이 잘못된 것을 남용했을 것 같지 않기에 한번 알아보고자 했습니다. CQS란? CQS는 Command Query Separation을 의미하며, 데이터를 변경하는 명령(command)과 데이터를 조회하는 쿼리(query)를 철저히 분리하라는 디자인 패턴입니다...
CQRS란? CQRS는 Command and Query Responsibility Segregation, "명령과 조회의 책임 분리"를 의미합니다. 이는 프로그램 상에서 명령을 처리하는 책임과 조회를 처리하는 책임이 분리되어야 한다는 것을 의미합니다. 이는 쉽게 말하면 시스템 데이터 변경과 시스템 데이터 조회를 별개로 수행할 수 있게끔 구축하는 것을 의미합니다. 이와 유사한 개념으로 CQS (Command and Query Separation)이 있습니다. 보시다시피 매우 유사한 개념이지만, CQS는 명령과 조회의 책임 분리를 연산 단계에서만 분리하는 것을 의미하며, CQRS는 객체(object) 또는 시스템 레벨에서 분리하는 것을 의미합니다. 이를 쉽게 말하면 시스템 데이터에 변경을 가하는 코드와 시스..