확장에 열려 있으며 수정에 닫혀 있다.기존의 코드를 수정하지 않고도 애플리케이션의 동작을 확장할 수 있는 설계컴파일 의존성을 수정하지 않고도 런타임 의존성을 쉽게 변경할 수 있다.추상화에 의존하라!추상화핵심적인 부분만 남기고 불필요한 부분은 생략생략된 부분을 문맥에 적
스프링 기반으로 실무 환경에서 사용 가능한 수준의 독립실행형 어플리케이션을 고민 없이 빠르게 작성할 수 있도록 도와주는 여러가지 도구의 모음스프링 != 스프링 부트임을 반드시 기억하자!전체적으로 앞에 소개에서 나온 핵심 내용들을 포함하고 있다.빠르고 광범위한 영역의 스
작고 응집도 높은 객체 한 가지 일만 잘 하는 객체 기능을 구현은 객체들간의 협력을 통해서 이루어진다. 설계의 핵심은 필요한 의존성은 유지하되 변경을 방해하는 의존성은 제거 01 의존성 이해하기 변경과 의존성 의존성 실행 시점: 실행 시에 의존 대상 객체가 반
추상화 : 불피룡한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업분해 : 큰 문제를 해결 가능한 작은 문제로 나누는 작업프로시저 추상화소프트웨어가 무엇을 해야 하는지를 추상화한다.기능 분해(알고리즘 분해)데이터 추상화소프트웨어가 무엇을 알아야 하는지를
좋은 객체지향 코드를 얻기 위해서 → 객체를 지향객체가 수행하는 책임에 초점을 맞춰야 한다.애플리케이션은 클래스로 구성되지만 메시지를 통해 정의된다.따라서 가장 중요한 것은 메시지다.클라이언트-서버 모델메시지를 전송하는 객체를 클라이언트메시지를 수신하는 객체를 서버메시
리팩토링 대상인 코드함수 선언 변경하기변수 이름 바꾸기필드 이름 바꾸기좋은 함수 이름?어떻게 구현되었는지 코드를 보지 않아도 이름만 보고도 이해할 수 있다.(오브젝트에서는 이름에 구현 방법이 들어나면 안된다고 했는데...)어떻게 좋은 이름을 가진 함수를 만드나?주석을
책임에 초점을 두자 어떤 객체에게 어떤 책임을 할당할 것인가GRASP 패턴데이터는 객체가 책임을 수행하는 데 필요한 재료를 제공행동을 결정한 후에 데이터를 결정해야 한다 .협력에 적합한 책임 = 메시지 전송자에게 적합한 책임메시지가 객체를 선택하게 해야 한다."메시지를
객체 지향 설계의 핵심 - 역할, 책임, 협력협력 - 객체들의 상호작용책임 - 협력하기 위해 수행하는 행동역할 - 대체 가능한 책임의 집합(가중 중요)객체지향 설계의 핵심이 책임책임을 할당하는 작업이 응집도와 설계 품질과 깊이 연관객체에 행동에 초점을 맞춤으로서 결합도
회사에서 1차 과제를 하던 중 쿼리를 이용하여 페이징을 하고 있는데 중복된 데이터가 등장하며 페이징이 제대로 동작하지 않는 문제가 발생하였다.정렬 기준에 unique한 컬럼을 추가하지 않아서 발생하는 문제였다. DB는 더 이상 사용할 정렬 조건이 없는 경우 알아서 판단
SQL Mapper와 ORM은 개발자가 JDBC Programming(인간 매퍼)을 하지 않도록 기능을 제공한다.Object와 SQL의 필드를 매핑하여 데이터를 객체화 하는 기술객체와 테이블 간의 관계 매핑 아님SQL 문을 직접 작성하고 쿼리 수행 결과를 어떠한 객체에
mybatis like 검색 - postgresql, mysql 위에서 볼 수 있듯이 을 이용해 검색 키워드와 필요한 문자들을 합하여 사용할 수 있다. 위의 예시는 postgresql과 mysql에 한정된 방식인거 같으니 다른 vendor를 사용한다면 아래 블로그 글을 참고하도록 하자. 참고 [MyBatis] LIKE 검색 구문 (Oracle, Post...
sql에서 키워드가 포함되어 있는지 여부를 판단할 때 사용하는 문법like : 대소문자 구분ilike : 대소문자 구분하지 않음postgresql, mysql의 default escape 문자는 (backslash)이다.
Date : 년월일Timestamp : 년월일 + 시간Time : 시간Interval : 기간, 음수와 양수 모두 나올 수 있다.to_date(문자열, 문자열의 포맷팅)to_timestamp(문자열, 문자열의 포맷팅)to_char(Date, 문자열 출력 포맷팅)::da
모든 내용은 postgresql 기준입니다join on 문법을 사용하는 방법이 ansi join이라고 한다.현재 join 시 표준처럼 사용된다.view와 비슷하다.임시 테이블을 만든다.VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은 경우
객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsbility), 협력(collaboration)
객체지향 패러다임으로의 전환은 객체에 초점을 맞출 때에만 얻을 수 있다.어떤 객체가 필요한지 고민할 것객체는 협력하는 공동체의 일원으로 볼 것 → 설계를 유연하고 확장 가능하게 만든다.도메인문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야클래스의 내부와 외부를 구
소프트웨어의 모듈의 3가지 목적제대로 실행되어야 한다.변경이 용이해야 한다.이해하기 쉬어야 한다.이해 가능한 코드란 동작이 예상에서 크게 벗어나지 않는 코드관램객과 판매원이 극장의 통제를 받는다 → 예상에서 벗어남관람객(Audience)과 판매원(TicketSeller
1장 1장 정리 내용 2장 2장 정리 3장 3장 정리 4장 4장 정리 5장 5장 정리 6장 [6장 정리](https://github.
데이터베이스에 상태를 변화시키는 작업의 논리적인 단위하나로 처리해야하는 명령문들의 그룹분할 할 수 없는 업무처리의 단위트랜잭션은 ACID 특징을 보장해야 한다.단 상황에 성능(동시성)을 위해 희생시킬 수 있다(by isolation level)트랜잭션에서 일관성과 동시
보안 정보를 관리하기 위해서 사용하지만 etcd에 그대로 저장되기 때문에 중요한 정보인 경우 외부 솔루션을 사용해야한다.쿠버네티스 안내서