백엔드/Spring Boot 32

6. 블로그 기획하고 API 만들기 (1) - API와 REST API

1. 사전 지식 : API와 REST API 1) 식당으로 알아보는 API ▪︎ API ( Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스 ) - 클라이언트의 요청을 서버에 전달하고, 서버의 결과물을 클라이언트에게 전달해주는 역할 즉, 프로그램 간에 상호작용하기 위한 매개체를 의미 - 식당의 점원 역할 : 손님이 점원에게 주문을 하면, 점원이 주방에 가서 주문을 전달 요리가 완성되면 다시 점원이 손님에게 요리 전달 2) 웹의 장점을 최대한 활용하는 REST API ▪︎ REST API ( Representational State Transfer ) - 자원을 이름으로 구분해 자원의 상태를 주고 받는 API 방식 - 웹의 장점을 최대한 활용하는 API - ..

5. 데이터베이스 조작이 편해지는 ORM (2) - JPA와 하이버네이트, 스프링 데이터와 스프링 데이터 JPA

3. JPA와 하이버네이트 ◉ DBMS에도 여러 종류가 있는 것처럼, ORM에도 여러 종류가 있음 ▪︎ 자바에서는 JPA( Java Persistence API )를 표준으로 사용함 ▪︎ JPA : 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 → 실제 사용을 위해서는 ORM 프레임 워크를 추가로 선택해야 함 ⇒ 대표적으로 Hibernate를 많이 사용함 ▪︎ 하이버네이트 - JPA 인터페이스를 구현한 구현체이자 자바용 ORM 프레임워크 - 내부적으로 JDBC API 사용 → 하이버네이트의 목표 : 자바 객체를 통해 데이터베이스 종류에 상관없이 데이터베이스를 자유자재로 사용할 수 있게 해줌 🗣️ JPA와 하이버네이트의 역할 ★★★ - JPA : 자바 객체와 데이터베이스를 연결해 데이터를..

5. 데이터베이스 조작이 편해지는 ORM (1) - 데이터베이스, ORM

1. 데이터베이스란? ◉ 데이터베이스는 데이터를 매우 효율적으로 보관하고 꺼내 볼 수 있는 곳! 많은 사람들이 안전하게 데이터 사용 및 관리 가능 1) 데이터베이스 관리자, DBMS ▪︎ 데이터베이스 관리자, DBMS - DBMS( Database Management System ) : 데이터베이스를 관리하기 위한 소프트웨어 → 관리 특징에 따라 관계형, 객체-관계형, 도큐먼트형, 비관계형 등으로 분류 ◉ 관계형 DBMS ▪︎ 관계형 DBMS = RDBMS ( Relational DBMS ) : 테이블 형태로 이루어진 데이터 저장소 ▪︎ ( 예시 ) 회원 테이블 회원 테이블 ID 이메일 나이 1 a@test.com 10 2 b@test.com 20 3 c@test.com 30 - 행 : 데이터 1, a@..

4. 스프링 부트 3와 테스트

1. 테스트 코드 개념 익히기 ◉ 테스트 코드 : 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드 1) 테스트 코드란? ▪︎ 테스트 코드 : test 디렉터리에서 작업 ▪︎ 테스트 코드의 다양한 패턴 중 given-when-then 패턴 이용 → 테스트 코드를 세 단계로 구분해 작성하는 방식 ① given : 테스트 실행을 준비하는 단계 ② when : 테스트를 진행하는 단계 ③ then : 테스트 결과를 검증하는 단계 2. 스프링 부트 3와 테스트 ◉ 스프링 부트는 애플리케이션을 테스트하기 위한 도구와 애너테이션을 제공함 ▪︎ spring-boot-starter-test 스타터의 테스트 도구 목록 • JUnit : 자바 프로그래밍 언어용 단위 테스트 프레임 ..

3. 스프링 부트 3 구조 이해하기

1. 스프링 부트 3 구조 살펴보기 - 계층 : 각자의 역할과 책임이 있는 어떤 소프트웨어의 구성 요소를 의미 → 각 계층은 소통 가능하지만, 직접 간섭하거나 영향을 미치지 않음 1) 스프링 부트의 계층 알아보기 프레젠테이션 계층 비즈니스 계층 퍼시스턴스 계층 데이터베이스 컨트롤러 서비스 레포지토리 ◉ 프레젠테이션 계층 • HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할 → 컨트롤러 • 컨트롤러는 스프링 부트 내에 여러 개가 있을 수 있음 ◉ 비즈니스 계층 • 모든 비즈니스 로직을 처리 → 서비스 ◉ 퍼시스턴스 계층 • 모든 데이터베이스 관련 로직을 처리 → 레포지토리 • 이 과정에서 데이터베이스에 접근하는 DAO 객체 사용 가능 → DAO : 데이터베이스 계층과 상호작용하기 위한 객체 ..

2. 스프링 부트 시작하기 (2) - 스프링 부트 둘러보고 코드 이해하기

3. 스프링 부트3 둘러보기 1) 첫 번째 스프링 부트3 예제 만들기 ① TestController.java - 사용자가 /test GET 요청 시, "Hello, World!" 문자열을 반환 package org.choongang.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController // 라우터 역할 : HTTP 요청과 메서드를 연결하는 장치 public class TestController { @GetMapping("/test") public String hello() { return "H..

2. 스프링 부트 시작하기 (1) - 스프링 콘셉트 공부

포스트맨 설치 • 별도의 애플리케이션 • HTTP 요청을 보낼 수 있는 클라이언트 프로그램 • API 개발을 마친 후 웹 브라우저에서 테스트하기 보다, 포스트맨을 이용하기 . 다운로드 ① 구글에서 포스트맨 검색 - 다운로드 : Mac Apple Chip 클릭 - 파인더에서 다운로드 받은 파일 클릭해서 실행시키면 설치 완료! ② 하단 Skip and go to the app 클릭 : 계정없이 사용해보기 ③ 프로젝트 실행시킨 후, 포스트맨에서 호출해보기 1. 스프링과 스프링 부트 1) 스프링의 등장 - 엔터프라이즈 애플리케이션 ( Enterprise Application ) ▪︎ 대규모의 복잡한 데이터를 관리하는 애플리케이션 용어 ▪︎ 소프트웨어의 발전으로 엔터프라이즈 애플리케이션이 점점 복잡해짐 → ( 예..

48, 49 - Spring Boot : 회원가입 게시판 생성 (1)

1. 회원가입 입력양식인 member_register_form.jsp 생성 • 위치 : ‘/webapp/WEB-INF/view’ 폴더 내 위치 • 외부에서 접근 불가 → Controller에 의해 접근하기 : ❷방식으로 접근 ➊ 서블릿을 통해 JSP 파일 접근 클래스 단위로 매핑 ‘@WebServlet’ 죽석 추가 → name 및 urlPatterns 속성 이용 서블릿을 작동시키기 위해서 ‘프로젝트명Application’에 ‘@ServletComponentScan’ 주석 추가 ❷ Controller 클래스를 통해 JSP 파일 접근 - 스프링 부트 방식 메서드 단위로 매핑 → Controller 하나당 여러 개의 메서드 이용해 매핑 가능 다만, 웹 앱 단위로 컨트롤러 구분하는 것 권장 ‘@Controlle..

47 - Spring Boot : JSPCookBook 프로젝트 생성

* 폴더 구조 \application \controller → 라우팅 기능 \domain → ( DTO / VO ) ⇒ 데이터 / DAO ⇒ 메서드 \service → 데이터 정제 기능 \util → 기타 기능 1. 파일 생성 시, 폴더도 함께 생성시키기 - Project Package창에서 생성시킨 결과 확인 2. index.jsp 파일 생성 후, Spring Boot App 실행 - console창에서 톰캣이 8080 포트로 시작한다는 것 → 서버창에 ‘localhost:8080’ 입력 시, Whitelabel Error Page 출력됨 • 현재 톰캣 서버의 포트 : 80 → 'src/main/resources' 내 application.properties 파일에서 서버 포트 변경해주기 - conso..

46 - Spring : 의존성 주입

- DI(Dependency Injection) • Spring Framework의 3가지 핵심 프로그래밍 중 하나인 의존성 주입(DI)는 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴 • 각 객체 간 의존관계를 스프링 컨테이너가 개발자가 정의한 Bean 등록 정보를 바탕으로 자동으로 주입해주는 기능 * Beans이란? 스프링 컨테이너에서 관리하는 객체를 의미 ① 강한 결합 - 객체 내부에서 다른 객체를 생성하는 것은 강한 결합도를 가지는 구조 - A 클래스 내부에서 B 라는 객체를 직접 생성하고 있다면, B 객체를 C 객체로 바꾸고 싶은 경우에 A 클래스도 수정해야 하는 방식이기 때문에 강한 결합 ② 느슨한 결합 - 객체를 주입 받는다는 것은 외부에서 생성된 객체를 인터페이스를 통해서 넘겨받는 ..