분류 전체보기 25

섹션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 등등 다양한 저장소를 고민중인 상황으로 가정개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용단순한..

섹션3. 스프링 웹 개발 기초

정적 컨텐츠스프링 부트 정적 컨텐츠 기능파일을 그대로 웹브라우저에 내려줌 resources/static/hello-static.html 생성 정적 컨텐츠 입니다.  실행http://localhost:8080/hello-static.html  정적 파일이 그대로 반환됨  정적 컨텐츠 이미지 내장 톰캣 서버가 요청을 받고 스프링에 넘김스프링은 먼저 컨트롤러 쪽에서 존재하는지 확인→ 없으면, resources:static/hello-static.html 찾음(컨트롤러가 우선 순위를 가짐)  MVC와 템플릿 엔진MVC : Mdoel, View,Controller (과거에는 컨트롤러와 뷰가 따로 분리되어 있지 않았고 뷰에 모든 걸 다 했었음 - 모델1 방식) 뷰는 화면을 그리는 데 집중컨트롤러와 모델 관련..

섹션2. 프로젝트 환경설정

프로젝트 생성사전준비물Java 설치IDE: IntelliJ 또는 Eclipse 설치https://start.spring.io/ 스프링 부트 스타터 사이트를 이용해 스프링 프로젝트 생성 해당 사이트에서 아래 사진과 같이 설정한 후, GENERATE 눌러 다운받음 ProjectGradle, Maven : 필요한 라이브러리를 가져오고, 빌드하는 라이프 사이클까지 관리해주는 툴Gradle을 많이 쓰는 추세 Spring BootSNAPSHOT, M1 이런 것들은 아직 정식 릴리즈 버전X Project MetadataGroup: 보통 기업 도메인명을 주 적음Artifact: build되어 나올 때의 결과물 Dependencies어떤 라이브러리를 가져올지 결정 압축 푼 뒤, IntelliJ에서 build.gradle..

8장 데이터베이스 설계

34강. 데이터베이스 설계1. 데이터베이스 설계데이터베이스를 설계한다 : 데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것'스키마 설계' 라 불리기도 함 - 논리명과 물리명테이블 설계시 테이블 정의서나 설계도 등의 문서를 작성하는 경우가 많음보통 문서의 양식은 DESC 명령에 따라 표시되는 결과와 비슷 테이블을 설계할 때, 하나의 테이블에 대해 두 개의 이름을 지정할 때가 있음물리명 : 데이터베이스에서 사용될 이름, CREATE TABLE에 지정하는 이름논리명 : 테이블의 '설계상 이름'물리명은 데이터베이스 시스템 규칙에 따라 제약O→ 물리명만으로는 의미가 전달되지 않는 경우가 있어 논리명 필요논리명은 해당 테이블을 실제로 부를 때 사용하는 이름 - 자료형테이블의 열에..

7장 복수의 테이블 다루기

31강. 집합 연산관계형 모델을 채개한 데이터베이스를 관계형 데이버테이스라 부름 1. SQL과 집합데이터베이스에서는 하나의 행이 하나의 요소, 복수의 행을 반환한 결과 전체가 하나의 집합에 해당 2. UNION으로 합집합 구하기합집합 : 집합을 서로 더한 것 - UNION⋃ : 합집합을 나타내는 기호 ex) 집합 A와 B의 합집합 → A ⋃ B ⋂ : 교집합을 나타내는 기호ex) 집합 A와 B의 교집합 → A ⋂ B SQL에서는 합집합을 나타낼 때 ⋃ 기호 대신 UNION 키워드 사용 ex)a123a21011SELECT * FROM sample71_aUNIONSELECT * FROM sample71_b;a1231011 두 개의 SELECT 명령을 하나의 명령으로 합치기때문에 세미콜론은 맨 나중에 붙임SE..

6장 데이터베이스 객체 작성과 삭제

25강. 데이터베이스 객체1. 데이터베이스 객체데이터베이스 객체 : 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말데이터베이스 내에 실체를 가지는 어떤 것 객체의 종류에 따라 데이터베이스에 저장되는 내용도 달라짐 객체의 ex) 테이블 → 행과 열이 저장됨 SELECT나 INSERT 같은 SQL 명령은 실체를 가지지 않으므로 객체X 객체는 이름을 가짐 (이름은 겹치지 않도록 함)열이나 별명은 객체가 아님 - 이름을 붙일 때의 제약 사항(명명규칙)기존 이름이나 예약어와 중복X숫자로 시작할 수 없음언더스코어(_) 이외의 기호 사용X한글을 사용할 때는 더블쿼트(MySQL에서는 백쿼트) 사용시스템이 허용하는 길이 초과X어떤 데이터가 저장되어 있는지 파악할 수 있도록 의미있는 이름으로 지..