본문 바로가기

전체 글

spring framework에서 사용하는 주요 annotation 정리 annotation은 외부 소프트웨어에 처리 내용을 전달하는 방법이다. 기본적인 annotation으로는 다음과 같은 것들이 있다(대부분 Lombok 필요). @SpringBootApplication spring boot 프로젝트를 사용할 때 spring boot 애플리케이션의 실행 클래스임을 지정하는 annotation이다. 실행 클래스이므로 main method가 필요하다. @Data class에 부여해, 모든 field에 대해 Getter와 Setter 메소드를 자동 생성해 준다. Getter와 Setter 외에도 여러 가지를 자동으로 생성하기 때문에, 도메인 등 핵심이 되는 객체에는 사용하기 적합하지 않다. @Getter class에 부여해, 모든 field에 대해 Getter 메소드를 자동 생성.. 더보기
HTTP method의 개념과 종류 정리 개념 HTTP(HyperText Transfer Protocol) method는 요청과 응답 과정에서 resource(자원)를 전달해 주는 URI와 함께 행위를 전달하는 역할을 한다. 클라이언트 / 서버, 서버 / 서버 간 전송에서 이용한다. HTTP 메시지를 통해 HTML파일, 텍스트파일, 영상파일 등 대부분 형태의 데이터를 전송 가능하다. HTTP 메소드는 @RequestMapping, @메소드명Mapping 등을 통해 handler method와 URL 주소를 매핑한다. 클라이언트가 특정 URL을 입력하면 HTTP 메소드를 통해 해당 URL에 매핑된 handler method가 호출되어 요청을 전달하고, 응답을 되돌려 줄 view의 이름을 지정한다. 응답을 view에서 html파일 등의 방식으로 시.. 더보기
(MySQL) SQL 기초 문법 정리 Schema 생성 CREATE DATABASE db명; ex) CREATE DATABASE market_db; 삭제 DROP DATABASE IF EXISTS db명; ex) DROP DATABASE IF EXISTS market_db; 조회 SHOW DATABASES; 사용 USE db명; ex) USE market_db; Table column 타입 정수형 TINYINT, SMALLINT, INT, BIGINT 실수형 FLOAT, DOUBLE 문자형 CHAR, VARCHAR 날짜형 DATE(날짜), TIME(시간), DATETIME(날짜와 시간) 대량 데이터 TEXT, LONGTEXT, BLOB, LONGBLOB 생성 CREATE TABLE 테이블명 ( column명 타입(글자 수 제한) NULL 허.. 더보기
DDD 기반의 AOP에서 비즈니스 로직이 가지는 의미 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)에서 중심적 관심사(Primary Concerns)는 횡단적 관심사(Crosscutting Concerns)와 대비되는 개념으로, 중심적 관심사는 해당 소프트웨어의 존재 목적으로서 소프트웨어를 통해 해결하고자 하는 현실세계의 문제를 뜻한다. DDD(Domain Driven Design, 도메인 주도 설계)를 통해 중심적 관심사를 도메인(영역) 별로 분류하고, 각각의 도메인을 해결하기 위한 의사결정을 수행하는 로직이 비즈니스 로직이다. 반면 중심적 관심사의 원활한 처리와 가공을 위한 횡단적 관심사의 반복적인 처리는 최소화하기 위해, annotation(외부 소프트웨어에 처리 내용을 지시하는 명령)을 활용하여 최대한 spring.. 더보기
DDD에서 Controller, Service, Repository의 역할 Layered Architecture는 애플리케이션의 컴포넌트(component, 구성요소)들을 계층(layer) 별로 나눈 구조이다. 일반적으로 presentation layer(Controller 컴포넌트가 속함), business(service) layer(Service 컴포넌트가 속함), data access layer(Repository 컴포넌트가 속함)의 세 개의 계층으로 나뉜다. 설계에 따라 네 개의 계층으로 나뉘기도 하고, Service와 Repository 컴포넌트가 함께 domain layer에 속하기도 한다. 이렇게 계층별로 나뉘는 구조의 대표적인 특징은 다음과 같다. 각 계층은 자신의 바로 하위 계층의 의존성을 주입받는다. 상위 계층에서 하위 계층으로만 접근이 가능하고, 역으로는 접.. 더보기
DDD(Domain Driven Design)에서 Entity, DTO, VO 비교 Entity Entity는 주로 데이터베이스의 테이블과 매핑되는 객체다. 값이 쉽게 변경되면 객체의 일관성이 유지되지 않으며 다른 객체들에도 영향을 끼치게 되므로, Setter가 아닌 생성자를 사용하는 것이 바람직하며 데이터 전송용으로는 적합하지 않다. Entity는 Business layer에 속하지는 않지만, 도메인에 관계되는 일부 복잡한 로직은 DDD의 Rich Model 개념에 의거하여 Entity에서 구현할 수도 있다. 이는 Entity가 스스로의 상태를 관리하기 위함이다. 하지만 이것이 주 목적은 될 수 없으며, 기본적으로는 데이터베이스의 조작을 수행하기 위한 매개체로서 기능한다. Entity 객체는 식별성을 가지고 있으므로, 반드시 식별자(ID)를 포함해야 한다. @Entity @Getter.. 더보기
DDD(Domain Driven Design)와 SQL 중심 설계의 차이점 DDD DDD(도메인 주도 설계)는 데이터를 도메인별로 나누어, 도메인 객체를 중심으로 관리하는 설계 기법이다. 여기서 도메인이란 현실 세계에서 해결해야 할 문제가 나눠지는 영역을 뜻한다. DDD 방식은 복잡한 비즈니스 로직을 가지는 소프트웨어에 적합하며, 비즈니스의 요구사항을 보다 명확하게 이해하고, 이를 개발자의 코드에 반영할 수 있도록 돕는다. 도메인 주도 설계를 통해 객체의 역할을 명확히 구분할 수 있고, 비즈니스 로직(현실세계의 문제(도메인)에 대한 의사결정 과정을 포함하는 로직)과 서비스 로직(애플리케이션의 기능을 지원하는 로직)이 구별되어 주요 문제에 집중하기 쉬워진다. 비즈니스와 서비스 객체의 구분이 명확하므로 유지 보수가 용이하고, 도메인별 연관관계 속에서 데이터가 관리되므로 체계적인 관.. 더보기
Spring Framework의 DI(의존성 주입)와 IoC(제어의 역전) 개념 정리 DI DI(의존성 주입)는 클라이언트(다른 객체를 사용하려는 대상)가 의존할 객체를 외부에서 지정해 주는 것을 말한다. 역할이 배타적이지 않고 다른 객체의 변화에 영향받는다면 의존성이 있는 것이다. 클라이언트가 직접 객체를 생성하지 않아도, IoC(DI) Container를 통해 객체를 관리하는 spring framework는 다른 객체에 의존하도록 주입할 수 있다. IoC Container는 객체 생성 대상으로 지정된 객체를 관리하며 자동으로 객체를 생성하고, annotation을 통해 클라이언트의 코드 변경 없이 다형성을 구현할 수 있게 해 준다. 이는 클라이언트가 아닌 프레임워크가 제어 권한을 갖고 있기 때문에 가능한 것이다. IoC IoC(제어의 역전)는 프로그램의 제어 권한이 뒤바뀌는(inver.. 더보기