[스프링 부트 쇼핑몰 프로젝트 with JPA] 1-2. 상품 Repository 설계
·
Web & Android/스프링 부트 쇼핑몰 프로젝트 with JPA
이 내용은 스프링 부트 쇼핑몰 프로젝트 with JPA 책을 학습한 내용입니다. 1. Spring Data JPA Spring Data JPA 개념 2. 상품 Repository 생성 kr.spring.item.repository.java 생성 DAO 역할을 수행하는 Repository 인터페이스 JpaRepository 클래스 extends package kr.spring.item.repository; import kr.spring.item.entity.Item import org.springframework.data.jpa.repository.JpaRepository; public interface ItemRepository extends JpaRepository { }
[스프링 부트 쇼핑몰 프로젝트 with JPA] 1-1. 상품 Entity 설계
·
Web & Android/스프링 부트 쇼핑몰 프로젝트 with JPA
이 내용은 스프링 부트 쇼핑몰 프로젝트 with JPA 책을 학습한 내용입니다. 1. 상품 판매 상태 enum 설계 enum 클래스에 대한 개념 kr.spring.item.constant.item.java 생성 상품의 현재 판매 상태 (판매, 품절)를 나타내는 상수값 (SELL, SOLD_OUT) package kr.spring.item.constant; // 상품의 현재 판매 상태를 나타내는 상수값 public enum ItemSellStatus { SELL, SOLD_OUT } 2. 상품 클래스 생성 kr.spring.item.entity.java 생성 상품 판매 상태의 값은 ItemSellStatus 열거형의 값을 가짐 package kr.spring.item.entity; // 아이템 엔티티 im..
[SpringBoot] 환경 설정
·
Web & Android/SpringBoot
자동 갱신 1. 의존성 추가 - 추후 필요한 건 추가하면서 진행 Spring Boot DevTools Lombok Spring Data JPA MySQL Driver Thymeleaf Spring Web 추가 설정 File/Setting/Build, Exe../Build Tools/Gradle/Gradle JVM : 17로 설정 Project Structure/Project/SDK - 17, Language level -17 or default Project Structure/SDKs/17 File/Setting/Editor/File Encodings/UTF-8 2. DB 환경 설정 - application.properties 설정 애플리케이션 포트 설정 server.port = 8000 MySQL 연결..
[Spring Data JPA] 즉시로딩, 지연로딩
·
Web & Android/Spring Data JPA
즉시 로딩 ⇒ 연관된 엔티티를 즉시 조회 후 영속성 컨텍스트에 저장 연결된 모든 데이터를 즉시 가지게 된다는 것. 문제점 조인해서 가져오는 엔티티가 많아질수록 쿼리가 어떻게 실행될지 개발자가 예측하기 힘듦 사용하지 않은 엔티티도 한꺼번에 가져오기 때문에 성능상 문제가 발생할 수 있음 @ManyToOne, @OneToOne처럼 One으로 끝나는 것들은 기본값이 즉시 로딩 @OneToMany, @ManyToMany처럼 Many로 끝나는 것들은 기본값이 지연 로딩 즉시 로딩 대신에 지연 로깅 방식 사용 -> (fetch = FetchType.*LAZY*) 연관관계 어노테이션 뒤에 붙이기 // 양방향 매핑을 하기 위해 설정, 영속성 전이 설정, 고아객체 설정(고아객체가 되면 다 날려버리겠다는 것) @OneToM..
[Spring Data JPA] 영속성 전이, 고아객체
·
Web & Android/Spring Data JPA
영속성 전이 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션 ex) 학생이라는 엔티티가 있는데 학생이 졸업을 해서 연관된 엔티티들을 지워야함 하나도 남김 없이 연관된 엔티티를 지워야만 메인(학생)엔티티를 지울 수 있음 이걸 설정하는게 영속성 전이 cascade 옵션 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) // 양방향 매핑을 하기 위해 설정 private List orderItems = new ArrayList(); 1. 주문 영속성 전이 부모인 Order Entity가 저장될 때, 자식인 OrderItem 또한 저장되는 영속성 전이 OrderRepository 생성 import kr.spring.orde..
[Spring Data JPA] 연관 관계 매핑
·
Web & Android/Spring Data JPA
1. 종류 일대일(1:1) : @OneToOne 일대다(1:N) : @OneToMany 다대일(N:1) : @ManyToOne 다대다(N:M) : @ManyToMany 2. 방향 단방향 A 엔티티만 B 엔티티를 참조하는 것. 즉, 한 쪽만 참조하는 것을 말함. 양방향 A 엔티티와 B 엔티티가 서로를 참조하는 것. JPA 객체지향 중심 설계에서는 단방향, 양방향 존재 데이터베이스 중심 설계 테이블에서 관계는 항상 일대일 단방향 매핑 회원들은 각자 자신의 장바구니를 하나 갖고 있으며 장바구니 입장에서 봐도 자신과 매핑되는 한 명의 회원을 갖는 일대일 매핑 구조 장바구니 Entity는 현재 회원 Entity에 대한 정보를 알고 있음 회원 Entity에는 장바구니(Cart) Entity와 관련된 소스가 전혀 없..