백엔드 20

5장. 게시글 읽기: Read

5.1 데이터 조회 과정DB에 저장된 데이터를 웹 페이지에 출력하는 과정사용자가 데이터를 조회해 달라고 웹 페이지에서 URL 요청을 보냄서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달리파지터리는 정보를 가지고 DB에 데이터 조회를 요청DB는 해당 데이터를 찾아 엔티티로 반환반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달됨최종적으로 결과 뷰 페이지가 완성되어 사용자의 화면에 출력됨 5.2 단일 데이터 조회하기URL 요청받기DB에 저장한 데이터를 웹 페이지에서 보려면 해당 출력 페이지에 접속해야 함URL 요청이 필요 게시글 n번 id를 조회할 때 localhost:8080/articles/n 에 접속하는 식으로 URL 요청을 받을 예정 아직 요청을 받아 줄 컨트롤러가 ..

4장. 롬복과 리팩터링

4.1 롬복이란롬복: 코드를 간소화해주는 라이브러리롬복을 사용하면 필수 코드를 간편하게 작성할 수 있음 로깅: 프로그램의 수행 과정을 기록으로 남기는 것리팩터링: 코드의 기능에는 변함이 없이 코드의 구조 또는 성능을 개선하는 작업  4.2 롬복을 활용해 리팩터링하기롬복 설치하기1. firstproject > src 아래에 build.gradle 파일명 앞에 코끼리 아이콘이 존재함을 볼 수 있음이 파일에 롬복 추가 → 더블 클릭하여 코드 열기 2. dependencies {} 블록에 아래의 코드 추가compileOnly 'org.prjectlombok:lombok'annotationProcessor 'org.projectlombok:lombok' 3.  편집기에 나타난 코끼리 모양의 새로고침 아이콘 클릭(..

3장. 게시판 만들고 새 그 작성하기: Create

3.1 폼 데이터란폼 데이터: HTML 요소인 태그에 실려 전송되는 데이터  태그는 웹 브라우저에서 서버로 데이터를 전송할 때 사용어디로(where), 어떻게(how) 보낼지를 적어서 보냄  태그에 실어서 보낸 데이터는 서버의 컨트롤러가 DTO(Data Transfer Object) 객체에 담아 받음DTO로 받은 데이터는 최종적으로 데이터베이스에 저장됨  3.2 폼 데이터를 DTO로 받기입력 폼 만들기1. src > main > resources > templates 디렉터리에서 articles 디렉터리 생성 후 new.mustache 뷰 페이지 생성 2. 코드 작성{{>layouts/header}} Submit{{>layouts/footer}}  컨트롤러 만들기1. src > ma..

2장. MVC 패턴 이해와 실습

2.1 뷰 템플릿과 MVC 패턴뷰 템플릿화면을 담당하는 기술, 웹 페이지(View)를 하나의 틀(Template)로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여줌1장에서 스프링 부트 프로젝트를 만들 때 추가한 Mustache 도구가 뷰 템플릿을 만드는 도구임 MVC 패턴화면을 담당하는 뷰 템플릿을 '뷰'라고도 부름컨트롤러(Controller)는 클라이언트의 요청에 따라 서버에서 처리하는 역할모델(Model)은 데이터를 관리하는 역할 웹 페이지를 화면에 보여주고(View), 클라이언트의 요청을 받아 처리하고(Controller), 데이터를 관리하는(Model) 역할을 나누는 기법을 MVC 패턴(Model-View-Controller Pattern)이라고 함  2.2 MVC 패턴을 활용해 뷰 템플릿..

1장. 스프링 부트 시작하기

1.1 스프링 부트란자바 웹 프로그램을 쉽고 빠르게 만들기 위한 도구 1.2 스프링 부트 개발 환경 설정하기개발 환경 설정 과정1. JDK (자바 코드의 번역과 실행을 담당하는 자바 개발 도구) 2. IDE (ex. 이클립스, 인텔리제이) 설치3. 스프링 부트 프로젝트 만들기  JDK 설치하기1. cmd에 java -version으로 설치되어 있는지 확인2. OpenJDK 설치 https://adoptium.net/temurin/releases 에 접속하여 다운로드Windows/x64/JDK/17 - LTS3. install4. JDK 잘 설치되었는지 1. 과정으로 확인  IDE 설치하기https://www.jetbrains.com/ko-kr/idea/download 에 접속하여 다운로드 (인텔리제이) ..

섹션8. AOP

AOP가 필요한 상황모든 메소드의 호출 시간을 측정하고 싶다면?공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? MemberService 회원 조회 시간 측정 추가package hello.hellospring.service;import hello.hellospring.domain.Member;import hello.hellospring.repository.MemberRepository;import hello.hellospring.repository.MemoryMemberRepository;import org.springframework.beans.factory.annotation.Autowired;i..

섹션7. 스프링 DB 접근 기술

H2 데이터베이스 설치개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공https://www.h2database.com 에서 다운로드 h2.bat 입력하여 실행실행 후 화면jdbc:h2:~/test (최초 한번)연결 버튼 클릭 ~/test.mv.db 파일 생성 확인 jdbc:h2:tcp://localhost/~/test 입력하여 연결  테이블 생성하기 ctrl + Enter 로 실행 모두 지운 상태로 MEMBER 클릭하면 자동으로 SELECT * FROM MEMBER 입력됨 insert into member(name) values('spring1')insert into member(name) values('spring2') 입력 후 결과 테이블 관리를 위해 프로젝트 루트에 sql/ddl.sql 파..

섹션6. 회원 관리 예제 - 웹 MVC 개발

회원 웹 기능 - 홈 화면 추가controller 패키지에 HomeController 클래스 생성package hello.hellospring.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class HomeController { @GetMapping("/") public String home(){ return "home"; }}  template/home.html 생성 Hello Spring 회원 기능 회원 가입 ..

섹션5. 스프링 빈과 의존관계

컴포넌트 스캔과 자동 의존관계 설정회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계 준비 회원 컨트롤러에 의존관계 추가package hello.hellospring.controller;import hello.hellospring.service.MemberService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;@Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberContro..

섹션4. 회원 관리 예제 - 백엔드 개발

비즈니스 요구사항 정리데이터: 회원 ID, 이름기능: 회원 등록, 조회아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조컨트롤러: 웹 MVC의 컨트롤러 역할서비스: 핵심 비즈니스 로직 구현, ex) 회원 중복 가입 불가 로직리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리도메인: 비즈니스 도메인 객체, ex) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리 클래스 의존관계아직 데이터 저장소가 선정되지 않아서, 우선 인터베이스로 구현 클래스를 변경할 수 있도록 설계데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용단순한..