전체 글

전체 글

    웹 계층 개발

    웹 계층 개발

    웹 계층 개발 홈 화면 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 상품 등록 상품 목록 상품 수정 변경 감지와 병합 상품 주문 홈 화면과 레이아웃 홈 컨트롤러 등록 package jpabook.jpashop.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HomController { Logger log = L..

    모음 사전

    문제 설명 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다. 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요. 제한사항 word의 길이는 1 이상 5 이하입니다. word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다. 입출력 예 word result "AAAAE" 6 "AAAE" 10 "I" 1563 "EIO" 1189 입출력 예 설명 입출력 예 #1 사전에서 첫 번째 단어는 "A"이고, 그다음은 ..

    주문 도메인 개발

    주문 도메인 개발

    주문 도메인 개발 구현 기능 상품 주문 주문 내역 조회 주문 취소 목차 주문 엔티티, 주문상품 엔티티 개발 주문 리포지토리 개발 주문 서비스 개발 주문 검색 기능 개발 주문 기능 테스트 주문, 주문상품 엔티티 개발 주문 엔티티 개발 주문 엔티티 코드 package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "orders") @Getter @Setter public class Order { @I..

    상품 도메인 개발

    상품 도메인 개발

    상품 도메인 개발 구현 기능 상품 등록 상품 목록 조회 상품 수정 목차 상품 엔티티 개발(비즈니스 로직 추가) 상품 리포지토리 개발 상품 서비스 개발 상품 기능 테스트 -> 여기선 생략할거임 (바로앞 테스트와 비슷) 상품 엔티티 개발(비즈니스 로직 추가) 상품 엔티티 코드 package jpabook.jpashop.domain.item; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import jav..

    회원 도메인 개발

    회원 도메인 개발

    회원 도메인 개발 구현 기능 회원 등록 회원 목록 조회 목차 회원 엔티티 코드 다시 보기 ( 앞에서 개발 했음 Member ) 회원 리포지토리 개발 회원 서비스 개발 회원 기능 테스트 회원 리포지토리 개발 회원 리포지토리 코드 package jpabook.jpashop.repository; import jpabook.jpashop.domain.Member; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.List; @Repository public class MemberReposito..

    애플리케이션 구현 준비

    애플리케이션 구현 준비

    애플리케이션 구현 준비 목차 구현 요구사항 애플리케이션 아키텍처 구현 요구사항 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 예제를 단순화 하기 위해 다음 기능은 구현X -> 나중에 따로 해보자! 로그인과 권한 관리X 파라미터 검증과 예외 처리X (최소화) 상품은 도서만 사용 카테고리는 사용X 배송 정보는 사용X 애플리케이션 아키텍처 계층형 구조 사용 controller, web: 웹 계층 service: 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain: 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain excep..

    도메인 분석 설계

    도메인 분석 설계

    도메인 분석 설계 목차 요구사항 분석 도메인 모델과 테이블 설계 엔티티 클래스 개발 엔티티 설계시 주의점 요구사항 분석 기능 목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계 회원, 주문, 상품의 관계 : 회원은 여러 상품을 주문할 수 있다. 그리고 한 번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계다. 하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않는다. 따라서 그림처럼 ..

    프로젝트 환경설정

    프로젝트 환경설정

    프로젝트 환경설정 목차 프로젝트 생성 라이브러리 살펴보기 View 환경 설정 H2 데이터베이스 설치 JPA와 DB 설정, 동작확인 프로젝트 생성 스프링 부트 스타터(https://start.spring.io/) 사용 기능 : web, thymeleaf, jap ,h2, lombok, validation groupId : jpabook artifactId : jpashop build.gradle Gradle 전체 설정 plugins { id 'org.springframework.boot' version '2.5.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'jpabook' version = '0.0...

    퍼즐 조각 채우기

    퍼즐 조각 채우기

    문제 설명 테이블 위에 놓인 퍼즐 조각을 게임 보드의 빈 공간에 적절히 올려놓으려 합니다. 게임 보드와 테이블은 모두 각 칸이 1x1 크기인 정사각 격자 모양입니다. 이때, 다음 규칙에 따라 테이블 위에 놓인 퍼즐 조각을 게임 보드의 빈칸에 채우면 됩니다. 조각은 한 번에 하나씩 채워 넣습니다. 조각을 회전시킬 수 있습니다. 조각을 뒤집을 수는 없습니다. 게임 보드에 새로 채워 넣은 퍼즐 조각과 인접한 칸이 비어있으면 안 됩니다. 다음은 퍼즐 조각을 채우는 예시입니다. 위 그림에서 왼쪽은 현재 게임 보드의 상태를, 오른쪽은 테이블 위에 놓인 퍼즐 조각들을 나타냅니다. 테이블 위에 놓인 퍼즐 조각들 또한 마찬가지로 [상,하,좌,우]로 인접해 붙어있는 경우는 없으며, 흰 칸은 퍼즐이 놓이지 않은 빈 공간을 ..

    빈 스코프

    빈 스코프

    빈 스코프 목차 빈 스코프란? 프로토타입 스코프 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Provider로 문제 해결 웹 스코프 request 스코프 예제 만들기 스코프와 Provider 스코프와 프록시 빈 스코프란? 지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입..