본문 바로가기

728x90

TIL

[Spring Data JDBC][DDD] DDD(Domain Driven Design)란? DDD(Domain Driven Design)는 우리말로 도메인 주도 설계 정도로 해석할 수 있는데, 용어의 의미 그대로 도메인 위주의 설계 기법을 의미합니다. 그런데 성능, 생산성, 안정성 면에서 뛰어난 애플리케이션을 만들기 위해 가장 중요한 영역인 애플리케이션의 설계는 구현보다 더 어렵습니다. 그래서 오래 전부터 많은 사람들이 어떻게하면 좀 더 나은 애플리케이션을 잘 설계할 수 있을까라고 고민한 결과물 중 하나가 바로 DDD(Domain Driven Design)입니다. DDD 자체는 굉장히 뛰어난 설계 및 구현 기법이라 생각하지만 DDD의 개념을 완벽히 이해하는 것이 쉽지 않기 때문에 많은 학습과 설계 경험이 필요하다고 생각합니다. 그런데 Sprin.. 더보기
[도메인 엔티티 및 테이블 설계][Sample] 샘플 애플리케이션 도메인 엔티티 및 테이블 설계 도메인에서 애그리거트 루트 찾기 [그림 3-43]은 우리가 이번 챕터에서 Spring Data JDBC를 이용해서 구현해야 할 커피 주문 샘플 애플리케이션의 도메인 모델입니다. 우리가 구현하는 커피 주문 샘플 애플리케이션은 학습용이기 때문에 결제, 배송과 같은 도메인은 필요하지 않습니다. 따라서 굉장히 심플한 도메인 모델로 설계되었습니다. ✔ 변경된 요구 사항 그리고 이 전 챕터까지는 기술의 이해를 위해 한 명의 회원이 하나의 커피만 주문한다라고 가정하고 학습을 진행 했지만 이번 챕터부터는 한명의 회원이 하나 이상의 커피를 주문할 수 있는 요구 사항이 반영되기 때문에 [그림 3-43]과 같은 도메인 모델이 도출 되었습니다. 세 개의 애그리거트(Aggrega.. 더보기
[SpringMVC][Spring Data JDBC] 핵심 포인트 데이터 액세스 기술의 유형은 크게 SQL 중심의 기술과 객체(Object) 중심의 기술로 나눌 수 있다. SQL 중심의 기술에는 mybatis, Spring JDBC 등이 있다. 객체(Object) 중심의 기술에는 JPA, Spring Data JDBC 등이 있다. JPA 같은 객체(Object) 중심의 기술을 ORM(Object-Relational Mapping) 기술이라고 한다. 인메모리(In-memory) DB는 애플리케이션이 실행된 상태에서만 데이터를 저장하고 애플리케이션 실행이 중지되면 인메모리 DB 역시 실행이 중지되어 저장된 데이터가 사라진다. Spring에서 지원하는 CrudRepository 인터페이스는 CRUD에 대한 기본적인 메서드를 정의하고 있기 때문에 별도의 CRUD .. 더보기
[SpringBoot][SpringBoot란?] 학습 목표 Spring Boot이란 무엇인지 이해할 수 있다. Spring Framework은 엔터프라이즈 애플리케이션을 개발하기 위한 핵심 기능을 제공하는 Spring Project 중 하나이며 Spring Boot는 Spring Framework의 편리함에도 불구하고 Spring 설정의 복잡함으로 인해 Spring기반 애플리케이션 개발을 시작하기도 전에 어려움을 겪는 문제점을 해결하기 위해 생겨난 Spring Project중 하나이다 Spring Boot을 사용해야 하는 이유를 알 수 있다. 사용해야하는 현실적인 이유 -XML기반의 복잡한 설계 방식 지양 -의존 라이브러리의 자동 관리 : Spring Boot 이전에는 애플리케이션에서 필요한 라이브러리를 사용하기 위해서는 필요한 라이브러리의 이름과 버.. 더보기
[SpringFramework][Architecture] 학습 목표 아키텍처(Architecture)의 의미를 이해할 수 있다. 아키텍처는 건축분야에서 유래된 용어로써 요구사항을 만족하는 건축물을 짓는 데 있어 청사진 같은 역할을 한다 컴퓨터 시스템에서 아키텍처 유형 시스템 아키텍처 시스템 아기텍처는 하드웨어와 소프트웨어를 모두 포함하는 어떤 시스템의 전반적인 구성을 큰 그림으로 표현한 것이다 또한 해당시스템 구성 요소들 간의 상호작용이 어떻게 이루어지는지 등 시스템 정상적으로 동작하기 위한 시스템 아키텍처 안에 표현이 되면 이해 당사자들이 해당 아키텍처를 이해하는데 도움이 된다 시스템 아키텍처 사례 시스템아키텍처를 어떤 식으로 표현하는지, 그리고 어떤 아키텍처를 점직적으로 개선해 나가는 모습을 알아보자 우리가 알아야 할 애플리케이션의 아키텍처를 이해할 수 있.. 더보기
[SpringFramework][PSA] PSA(Portable Service Abstraction) PSA의 의미를 이해할 수 있다. 어떤 클래스의 본질적인 특성만을 추출해서 일반화 하는것을 추상화라고한다 객체지향 프로그래밍 언어인 Java에서 코드로 추상화를 표현할 수 있는 대표적인 방법이 추상클래스와 인터페이스이다. 추상화의 예 예를 들어, 미취학 아동을 관리하는 애플리케이션을 설계하면서 아이 클래스를 일반화(추상화)한다고 가정했을 때 , 먼저 아이를 관리하는 관점에서 아이의 일반적인 속성으로는 이름, 키, 몸무게, 혈액형, 나이 등이 있을테고 아이가 할 수 있는 동작으로는 웃다, 울다, 자다, 먹다 등이 있을꺼다. 이렇게 추출해본 일반적인 아기의 특징을 클래스로 작성해보면 public abstract class Child { protec.. 더보기
[Spring][SpringMVC][Controller][패키지구조] API 엔드 포인트인 Controller의 구성 요소를 이해할 수 있다. Controller 클래스는 SpringMVC에서 클라이언트 요청의 최종 목적지이다. 애플리케이션을 제작하기 위해서 실질적으로 제일 먼저해야되는 일은 애플리케이션의 경계를 설정하는 것과 애플리케이션 기능 구현을 위한 요구사항을 수집하는 일이다 패키지 구조 생성 기능 기반 패키지 구조와 계층 기반 패키지 구조가 있다 기능 기반 패키지 구조(package-by-feature) : 애플리케이션의 패키지를 애플리케이션에서 구현해야 하는 기능을 기준으로 패키지를 구성하는 것이다. 이렇게 나누어진 패키지 안에는 하나의 기능을 완성하기 위한 계층별(API계층, 서비스 계층, 데이터 액세스 계층) 클래스들이 모여있다. 회원을 관리하기 위한 회원 .. 더보기
[Spring MVC] [Spring API계층] 학습 목표 Spring MVC Spring MVC란 무엇인지 이해할 수 있다. Spring의 모듈 중에는 웹 계층을 담당하는 몇 가지 모듈이 있는데 특히 서블릿 API를 기반으로 클라이언트의 요청을 처리하는 모듈을 Spring-WebMVC(Spring MVC)이다 SpringMVC는 클라이언트의 요청을 편리하게 처리해주는 프레임워크이다 서블릿(Servlet)이란? 서블릿은 클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java코드로 작성하는 클래스 파일이다 그리고 아파치 톰캣(Apache Tomcat)은 이러한 서블릿들이 웹 애플리케이션으로 실행이 되도록 해주는 서블릿 컨테이너 중 하나이다. Model : 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model이라고한다. 클라이언트의 요청.. 더보기

728x90