16번째 과제 [Spring] Entity, DTO, VO 의 개념과 특징 12번째 과제 Entity - 실제 DB의 테이블과 매핑되는 객체 - id를 통해 각각의 Entity를 구분한다 - 로직을 가질 수 있다 import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.GeneratedValue; impo sooz.tistory.com 이전에 Entity와 DTO, VO의 개념과 특징을 알아보았다. 배달 API 구현 프로젝트를 진행하면서 우선적으로 Food Entity 를 구현하였고 이를 DTO로 변환하려고 한다. 그리고 Entity 와 DTO 는 분리하여 사용하는 것이 좋다고 한다. 왜 인지는 아래에서 확..
13번째 과제 DDD (Domain Driven Design) 설계 개념 DDD 설계란 데이터 중심 설계에서 벗어나 도메인을 기반으로 설계하는 방식을 의미한다. 배달 서비스를 개발한다고 생각하면, 음식, 회원, 주문 등으로 비즈니스 도메인을 나누어 설계를 시작하는 것이다. 음식을 상위 도메인이라고 한다면 음식의 이름, 가격, 옵션 등은 하위 도메인으로 생각해 볼 수 있다. 이처럼 비즈니스 도메인을 먼저 생각해보고 이해를 하며 설계하는 것이 DDD 설계이다. 특징 도메인 모델과 로직에 초점을 둔다. 높은 응집도와 낮은 결합도를 지향하므로 유지보수와 확장성이 용이하다 소프트웨어의 복잡성을 최소화하는 것을 목적으로 한다 SQL 중심 설계 개념 SQL 중심 설계는 데이터베이스 구조와 데이터 흐름을 중심으로 하는..
12번째 과제 Entity - 실제 DB의 테이블과 매핑되는 객체 - id를 통해 각각의 Entity를 구분한다 - 로직을 가질 수 있다 import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String email; public User() { } public User..
11번째 과제 HTTP Method 종류 - HTTP 메서드 : 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식 1. GET - 리소스(데이터)를 조회하는 메서드 - URL(URI) 형식으로 서버측 리소스(데이터)를 요청한다. - 리소스(데이터)가 변하지 않는 멱등성이라는 개념을 지니고 있다. 2. POST - 서버에 데이터를 전송하여 리소스를 생성하는 메서드 - 데이터를 메세지 바디에 쿼리 파라미터 형식으로 전달한다. - GET과 달리 데이터가 외부로 노출되지 않아 보안상의 이점이 있다. 3. PUT - 리소스를 수정하는 메서드 (UPDATE) - 데이터를 완전히 대체하기 때문에 클라이언트는 리소스의 구체적인 위치를 지정해야한다. - GET과 같..
10번째 과제 1. 스프링 빈(Spring Bean) 등록 방법 스프링 IoC 컨테이너는 클래스에서 어노테이션을 보고 클래스의 인스턴스를 만든다. 이러한 인스턴스를 빈(Bean)이라고 한다. 스프링 빈을 등록하는 방법에는 2가지가 있다. 첫 번째, @Configuration + @Bean 조합 두 번째, @Component 스캔 두 번째 방법인 컴포넌트 스캔은 Service와 Repository 에 어노테이션으로 스프링 빈을 등록해주고 Autowired를 설정해주면, 자동으로 의존 관계를 주입해주는 방식이다. 스프링 빈으로 등록되면 DI를 요청할 수 있고, DI를 요청하는 방법은 필드 위에 @Autowired를 적어주면 된다. @Controller class Controller{ @Autowired Se..
9번째 과제 1. start.spring.io 활용해서 스프링 부트 프로젝트 생성하기 start.spring.io에 들어가서 설정 후 Generate 버튼을 눌러 프로젝트 zip 파일을 다운받는다. 파일의 압축을 풀고 IntelliJ에서 Open Project를 해주면 끝! 2. Controller 클래스 구현하기 - 요구사항 : 웹브라우저에 ‘localhost:8080/test’ 주소를 입력하면 첨부와 같이 TEST 글자 출력하기 controller 폴더를 만들고 그 안에 TestController 파일을 생성하였다. package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.spring..
8번째 과제 스프링의 꽃, 3계층 [ Client -- Controller 👉🏻 Service 👉🏻 Repository -- DB ] Client와 DB 사이 3계층의 역할은 각각 무엇일까? Controller - 역할 : 클라이언트에서 요청된 요구사항을 처리하고 지정된 뷰에 모델 객체를 넘겨준다. - 기능 : 요구사항 요청에 따라 어떤 처리를 할지 Service에 결정을 넘겨주고 전달된 값을 다시 클라이언트에 반환해준다. Service - 역할 : 실제로 작업이 일어나는 단계. 즉, 비즈니스 로직이 처리되는 곳이다 - 기능 : 서버에서 사용자의 요구사항을 처리한다. DB 정보가 필요하면 Repository에 요청한다. Repository - 역할 : Service에서 나온 결과값을 저장하거나 기존의 저..
7번째 과제 1. DI DI(Dependency Injection) : 의존성 주입 - 스프링은 기본적으로 의존 관계 주입 프레임워크이다. - 객체 간 의존관계를 스프링 컨테이너가 개발자가 정의한 Bean 등록 정보를 바탕으로 자동으로 주입해주는 것이다. - 단단하게 결합된 클래스들을 느슨한 결합으로 연결되게 해준다. DI 방법 1) 필드 주입 : 객체를 클래스에 필드로 선언하고 @Autowired를 붙인다 2) 생성자 주입 : 생성자에 @Autowired를 붙인다 (가장 권장!) 3) Setter 주입 : Setter 메서드에 @Autowired를 붙인다 2. IoC IoC(Inversion of Control) : 제어의 역전 - 직접 객체를 생성하는 것이 아니고 직접 DI 작업을 진행하지 않고 스프..
6번째 과제 1. API란? API란 Application Programming Interface의 약자로, 응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다. 즉, 프로그램 사이에서 상호 작용을 할 수 있도록 도와주는 중간 다리의 역할이라고 할 수 있다. 아래의 그림과 같이 점원의 역할을 하는 것이 API이다. 개발자는 API가 어떻게 구현되었는지를 알 필요 없이 그냥 다른 제품 및 서비스와 통신하는 데 인터페이스를 사용하면 된다. 사용 방법은 API 제공자에서 올린 공식 문서를 참고하여 사용하면 된다. 많은 기업에서 Open API를 제공하고 있다. - ex) Google Maps API, Kakao API Google Maps Pl..