Spring

    [스프링부트와 JPA 활용 1] Section6. 주문 도메인 개발

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

    [스프링부트와 JPA 활용 1] Section5 중 "상품 기능 테스트"

    김영한 강사님의 "스프링부트와 JPA 활용1"을 듣다 보면 Section 5에서 "상품 기능 테스트"를 생략하신 것을 볼 수 있다. 이 테스트가 이전에 강의에서 다룬 테스트와 유사하여 생략하였다고 하셨는데 복습겸 궁금하여 테스트 코드를 직접 작성하여 보였다. MemberServiceTest.java를 참고하여 작성하였고 //given, //when, //then 으로 나누어 작성하니 도움이 많이 되었다. 테스트한 기능은 상품 등록, 상품 목록 조회, 상품 조회이다. 파일 위치는 jpashop/src/test/java/jpabook/jpashop/service/ItemServiceTest.java 으로 지정하였다. package jpabook.jpashop.service; import jpabook.jpa..

    JPQL과 QueryDSL에 대해 끄적

    Intro JPA는 객체 중심적으로 코드를 작성할 수 있게 해주는데 그렇게 되면 JPA만으로는 모든 쿼리를 커버할 수 없다. 따라서 JPA는 객체를 검색(조회,select)할 수 있는 다양한 query 방법을 지원한다. JPQL JPA Criteria QueryDSL Native SQL 등등.. 이 포스팅에서는 주로 사용되는 JPQL과 QueryDSL에 대해 다루고자 한다. JPQL의 개념 Java Persistence Query Language JPQL은 엔티티 객체를 조회하는 객체지향 쿼리이다. JPQL은 가장 중요한 객체지향 쿼리 언어이다. JPA는 JPQL을 기반으로 하는 다양한 쿼리 서비스를 지원한다. JPA Criteria, QueryDSL, Natice SQL 등.. JPQL의 특징 SQL과..

    [스프링부트와 JPA 활용 1] Section5. 상품 도메인 개발

    상품 엔티티 개발 (비즈니스 로직 추가) 구현 기능 상품 등록 상품 목록 조회 상품 수정 순서 상품 엔티티 개발 (비즈니스 로직 추가) 상품 리포지토리 개발 상품 서비스 개발, (상품 기능 테스트) item.java 수정 package jpabook.jpashop.domain.item; import jakarta.annotation.ManagedBean; import jakarta.persistence.*; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import java.util.ArrayList..

    [스프링부트와 JPA 활용 1] Section4. 회원 도메인 개발

    회원 리포지토리 개발 jpashop/src/main/java/jpabook/jpashop/repository/MemberRepository.java 생성 package jpabook.jpashop.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jpabook.jpashop.domain.Member; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class MemberRepository { @PersistenceContext private Enti..

    [스프링부트와 JPA 활용 1] Section3. 애플리케이션 구현 준비

    구현 요구사항 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 애플리케이션 아키텍처 계층형 구조 사용 controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain : 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain exception repository service web 참고 controller은 repository에도 바로 접근할 수 있는 그러나 단방향으로 설정할 예정 개발 순서 서비스/리포지토리 계층 개발 → 테스트 케이스 작성하여 검증 → 마지막에 웹 계층 적용

    [스프링부트와 JPA 활용 1] Section2. 도메인 분석 설계

    요구사항 분석 회원 기능 : 회원 가입, 회원 목록 상품 기능 : 상품 등록, 상품 목록 주문 기능 : 상품 주문, 주문 내역 더보기 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계 1. 도메인 모델 설계 회원 : 주문 = 1 : N(*) 주문 : 상품 = N : N → 보통 사용하지 않는다 → 1 : N or N : 1 로 변경 주문 : 배송 = 1 : 1 상품 : 카테고리 = N : N 2. 엔티티 설계 (1) 회원 엔티티 Order와 ..

    SpringBoot에 대해 끄적

    1. SpringBoot 스프링의 문제점을 해결해주기 위해 개발된 스프링의 프레임워크 웹 프로그램을 쉽고 빠르게 만드어주는 웹 프레임워크 기본적인 설정과 재사용되는 코드 작성을 최소화 Web Application Server를 설치할 필요 없이 어플리케이션 실행 가능 간결한 설정, 내장 서버, 의존성 관리 간소화, 운영 편의성 보안 공격에 대한 코드를 직접 짤 필요가 없음 2. 웹 프레임워크 웹 프로그램을 만들기 위한 스타터 키드 자바로 만들어진 웹 프레임워크 중 하나가 바로 스프링부트 참고 : https://wikidocs.net/book/7601

    JPA에 대해 끄적

    1. JPA JPA = Java Persistence API JPA는 Java 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크 자바 어플리케이션과 JDBC 사이에서 동작 2. JDBC 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공 3. ORM 객체와 테이블을 매핑해서 패러다임의 불일치를 개발자 대신 해결 4. JPA 장점 INSERT SQL을 작성하고 JDBC API를 사용하는 지루하고 반복적인 일을 JPA가 대신 처리 → 생산성 개발자가 작성해야 할 SQL문과 JDBC API 코드를 JPA가 대신 처리 → 유지보수 DB 기술에 종속되지 않도록 함 -> 데이터 접근 추..