김영한

    스프링부트 JPA활용 2 - 웹 계층 개발(7)

    목차 📌홈 화면 👀 회원 기능 👀 회원 등록 👀 회원 조회 📌상품 기능 👀 상품 등록 👀 상품 수정 👀 상품 조회 📌주문 기능 👀 상품 주문 👀 주문 내역 조회 👀 주문 취소 📌홈 화면 홈 컨트롤러 package jpabook.jpashop.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home(){ log.trace("트..

    스프링부트 JPA활용 1 - 주문 도메인 개발(6)

    목차 📌주문, 주문상품 엔티티 개발 📌주문 리포지토리 개발 📌주문 서비스 개발 📌주문 기능 테스트 📌주문 검색 기능 개발 📌주문, 주문상품 엔티티 개발 주문 엔티티 코드 package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.Column; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "orders") @Getter @Setter public class Order { @Id @Generated..

    스프링부트 JPA활용 1 - 상품 도메인 개발(5)

    목차 상폼엔티티 개발(비즈니스 로직 추가) 상품 리포지토리 개발 상품 서비스 개발구현기능 상품 등록 상품 목록 조회 상품 수정 순서 상품 엔티티 개발(비즈니스로직 추가) 상품 리포지토리 개발 상품 서비스 개발 상품 기능 테스트 개발 📌상폼엔티티 개발(비즈니스 로직 추가) 상품 엔티티 코드 package jpabook.jpashop.domain.item; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import javax.persistence.Entity; import javax.persistence..

    스프링부트 JPA활용 1 - 회원 도메인 개발(4)

    목차 📌회원 리포지토리 개발 📌회원 서비스 개발 📌회원 기능 테스트 구현 기능 회원 등록 회원 목록 조회 순서 회원 엔티티 코드 다시보기 회원 리포지토리 개발 회원 서비스 개발 회원 기능 테스트 📌회원 리포지토리 개발 회원 리파지토리 package jpabook.jpashop.repository; import jpabook.jpashop.domain.Member; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.Li..

    스프링부트 JPA활용 1 - 애플리케이션 구현 준비(3)

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

    스프링부트 JPA활용 1 - 도메인 분석 설계(2)

    목차 📌요구사항 분석 📌도메인 모델돠 테이블 설계 📌엔티티 클래스 개발1 📌엔티티 클래스 개발2 📌엔티티 설계시 주의점 📌요구사항 분석 실제 동작 화면 기능 목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 📌도메인 모델과 테이블 설계 회원, 주문 , 상품의 관계 회원&주문 = 1:1 회원은 여러 상품을 주문할 수 있다. 주문&주문상품 = many:many 주문을 할 때 여러상품을 주문할 수 있다. 또 상품을 주문할 때 여러 주문을 할수있어서 다대다 관계가된다. ..

    스프링부트 JPA활용 1 - 프로젝트 환경설정(1)

    목차 📌프로젝트 생성 📌라이브러리 살펴보기 📌View 환경 설정 📌H2 데이터베이스 설치 📌JPA와 DB 설정, 동작확인 📌프로젝트 생성 plugins { id 'org.springframework.boot' version '2.7.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { imple..

    스프링 컨테이너와 스프링 빈-스프링 핵심원리 기본

    목차 스프링 컨테이너 생성 컨테이너에 등록된 모든 빈 조회 스프링 빈 조회 - 기본 스프링 빈 조회 - 동일한 타입이 둘 이상 스프링 빈 조회 - 상속 관계 BeanFactory와 ApplicationContest 다양한 설정 형식 지원 - 자바 코드,XML 스프링 빈 설정 메타 정보 - BeanDefinition 📌스프링 컨테이너 생성 // 스프링 컨테이너 생성 ApplicationContext ac //인터페이스 = new AnnotationConfigApplicationContext(AppConfig.class); //구현체(다형성 적용) ApplicationContext를 스프링 컨테이너라고 한다. ApplicationContext는 인터페이스이다. 스프링 컨테이너는 애노테이션 기반 자바 설정 클..

    스프링 핵심 원리 이해2 - 객체지향원리 적용

    목차 새로운 할인 정책 개발 새로운 할인 정책 적용과 문제점 관심사의 분리 AppConfig 리팩터링 새로운 구조와 할인 정책 적용 전체 흐름 정리 좋은 객체 지향 설계의 5가지 원칙의 적용 IoC, DI, 그리고 컨테이너 스프링으로 전환하기 핵심은 객체지향 원리 적용하기 새로운 할인 정책 개발 정률 할인 정책 개발 package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ int discountPercent = 10; //10프로 할인 @Override public int discount(M..

    스프링, JPA의 탄생

    스프링, JPA의 탄생 EJB : 자바빈즈(Enterprise JavaBeans) EJB란 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다. 스프링이 생기기전 개발자들은 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)라는 서버 앱으로 개발을 했는데 아래와같은 단점이 있었다. EJB 단점 객체지향적이지 않음 복잡한 프로그래밍 모델 특정 환경, 기술에 종속적인 코드 컨테이너에 안에..