분류 전체보기 36

백엔드 스프링 스터디를 시작하며 - 1편

군대 전역 후, 개인적으로 하고 싶었던 활동을 마무리하니 벌써 세월이 지금까지 흘렀다...^^ 갑자기 발등에 불이 떨어졌음을 깨닫고 급히 공부를 시작하려는데, 도저히 계획이 안 선다... 조금 공부를 했던 것도 아니고, 학교에서 객체지향프로그래밍이랑 자료구조 들어본게 끝이어서 (심지어 나는 비전공자이다...) 예전에 잠시 참여했던 김영한 강사님의 스프링 강의를 이번엔 급한 내가 직접 스터디를 모아 시작할 계획을 세웠다! 스터디를 모으고 처음 만나서 장황하게 계획을 얘기하고 나 포함 다섯 명 스터디원들의 동의와 다음주에 몇시, 어디서 만나자는 약속을 했지만! 거짓말 같이 네 명 중 한 명은 전날 불가능할 것 같다, 두 명은 당일 불참 통보, 한 명은 노쇼. 전원 불참!!! 심지어 노쇼이신 분은 노쇼하실지 ..

Spring 2024.01.22

섹션 7. 웹 계층 개발 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]

이 포스트는 김영한 강사님의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 을 바탕으로 작성되었습니다. 섹션 7. 웹 계층 개발 순서 1) 홈 화면 레이아웃 2) 회원 등록 3) 회원 목록 조회 4) 상품 등록 5) 상품 목록 6) 상품 수정 7) 변경 감지와 병합 (merge) 8) 상품 주문 9) 주문 목록 검색, 취소 10 ) 다음으로 1) 홈 화면 레이아웃 HELLO SHOP 회원 기능 회원 가입 회원 목록 상품 기능 상품 등록 상품 목록 주문 기능 상품 주문 주문 내역 home.html 파일이다. home에는 , , 버튼들을 클릭할 수 있다. 이제 회원가입을 누르면 회원가입 페이지로 넘어가 등록을 할 수 있게 할 것이며 다른 버튼들도 해당 페이지로 넘어가 작동하도록 해본다. 하..

Spring/Spring Boot 2024.01.01

섹션 6. 주문 도메인 개발 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]

이 포스트는 김영한 강사님의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 을 바탕으로 작성되었습니다. 섹션 6. 주문 도메인 개발 순서 1) 주문, 주문상품 엔티티 개발 2) 주문 리포지토리 개발 3) 주문 서비스 개발 4) 주문 기능 테스트 5) 주문 검색 기능 개발 1) 주문, 주문상품 엔티티 개발 id (order_id) member (FK, member_id) orderItems delivery (FK, delivery_id) orderDate status 연관관계 메서드 setMember 연관관계 메서드 addOrderItem 연관관계 메서드 setDelivery 생성 메서드 createOrder : 주문 회원, 배송정보, 주문상품 정보를 받아 실제 주문 엔티티를 생성 비즈니..

Spring/Spring Boot 2023.12.07

섹션 5. 상품 도메인 개발 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]

이 포스트는 김영한 강사님의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 을 바탕으로 작성되었습니다. 섹션 5. 상품 도메인 개발 순서 1) 상품 엔티티 개발(비즈니스 로직 추가) 2) 상품 리포지토리 개발 3) 상품 서비스 개발 1) 상품 엔티티 개발(비즈니스 로직 추가) package jpabook.jpashop.domain.item; import jakarta.persistence.*; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import java.util.ArrayLi..

Spring/Spring Boot 2023.12.07

섹션 4. 회원 도메인 개발 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]

이 포스트는 김영한 강사님의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 을 바탕으로 작성되었습니다. 섹션 4. 회원 도메인 개발 순서 1) 회원 리포지토리 개발 2) 회원 서비스 개발 3) 회원 기능 테스트 1) 회원 리포지토리 개발 package jpabook.jpashop.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jpabook.jpashop.domain.Member; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; imp..

Spring/Spring Boot 2023.12.07

섹션 2,3. 도메인 분석 설계, 구현 준비 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]

이 포스트는 김영한 강사님의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 을 바탕으로 작성되었습니다. 섹션 2. 도메인 분석 설계 순서 1) 요구사항 분석 2) 도메인 모델과 테이블 설계 3) 엔티티 클래스 개발 4) 엔티티 설계시 주의점 1) 요구사항 분석 화면에 회원기능 : 회원가입, 회원목록 상품기능 : 상품등록, 상품목록 주문기능 : 상품주문, 주문내역 가 나타나도록 한다. -> 다음 기능들을 개발한다. 회원 기능 : 회원 등록, 회원 조회 상품 기능 : 상품 등록, 상품 수정, 상품 조회 주문 기능 : 상품 주문, 주문 내역 조회, 주문 취소 기타 요구사항 : 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주..

Spring/Spring Boot 2023.12.07

섹션 1. 프로젝트 환경설정 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]

이 포스트는 김영한 강사님의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 을 바탕으로 작성되었습니다. 섹션 1. 프로젝트 환경설정 순서 1) 프로젝트 생성 2) 라이브러리 살펴보기 3) View 환경 설정 4) H2 데이터베이스 설치 5) JPA와 DB 설정, 동작 확인 1) 프로젝스 생성 스프링부트 스타터 (https://start.spring.io/) 를 통해 프로젝트를 생성한다. 환경 : Gradle-Groovy, groupId: jpabook, artifactId: jpashop dependencies : web, thymeleaf, jpa, h2, lombok, validation !주의! - 스프링부트 3.x 버전, 자바는 17 or 21 버전. 꼭꼭! 자바 버전을 11로 ..

Spring/Spring Boot 2023.12.06

자바 ORM 표준 JPA 프로그래밍 - 9장. 값 타입

기본값 타입 JPA는 최상위로 보면 엔티티 타입, 값 타입 두 개로 분류한다. - 엔티티 타입 @Entity로 정의 데이터가 변해도 식별자로 지속해서 추적 가능하다. 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능하다 - 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적이 불가능함 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체된다 값 타입은 또 다음과 같이 분류된다. 1) 기본값 타입 : 자바 기본타입(int, double), 래퍼 클래스(Integer, Long), String 기본값 타입은 생명주기를 엔티티에 의존한다. 예) 회원을 삭제하면 이름, 나이 필드도 함께 삭제된다는 ..

Spring/JPA 2022.10.25

자바 ORM 표준 JPA 프로그래밍 - 7장. 고급 매핑

상속관계 매핑 관계형 DB에는 상속관계라는게 없다. 대신 객체 상속과 유사한 슈퍼타입, 서브타입 모델링 기법이 있다. 여기서 말하는 상속관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 상속관계 매핑(슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법) 에는 세 가지 방법이 있다. - 각각 테이블로 변환 -> 조인 전략 - 통합 테이블로 변환 -> 단일 테이블 전략 - 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 위 세 가지 방법을 위해 사용하는 어노테이션들로 다음이 있다. @Inheritance(strategy = InheritanceType.XXX) - JOINED : 조인 전략 - SINGLE_TABLE : 단일 테이블 전략 - TABLE_P..

Spring/JPA 2022.10.24

자바 ORM 표준 JPA 프로그래밍 - 6장. 다양한 연관관계 매핑

연관관계 매핑시 고려사항 3가지 - 다중성 : 다대일, 일대다, 일대일, 다대다 중 무엇으로 매핑할지 - 단방향, 양방향 : 테이블은 외래 키 하나로 양쪽 조인이 가능하다. 반면 객체는 참조용 필드가 있는 쪽으로만 참조가 가능하다. 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향인 셈이다. - 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 반면 객체는 양쪽이 서로 참조하려면 참조가 2군데 있어야 하고 둘 중 테이블의 외래 키를 관리할 곳을 지정해야 한다. 이 외래키를 관리하는 곳이 연관관계의 주인이다. (주인의 반대편은 외래 키에 영향을 주지 않고 단순 조회만 가능하다.) 다대일 [N:1] 1) 다대일 단방향 가장 많이 사용하는 연관관계이다. 당연한거지만 다대일의 반대는 ..

Spring/JPA 2022.10.24