[스프링 부트 쇼핑몰 프로젝트 with JPA] 8-2. [상품 관리] 상품 목록 페이지
·
Web & Android/스프링 부트 쇼핑몰 프로젝트 with JPA
이 내용은 스프링 부트 쇼핑몰 프로젝트 with JPA 책을 학습한 내용입니다. 1. 상품 목록 페이지 결과 화면 상품 목록 테이블 부분, 하단 페이지 부분, 검색 조건 부분 존재 2. 상품 목록 페이지 View "검색" 버튼을 클릭하면 조회할 페이지 번호를 다시 "0"으로 설정해서 조회해야함 페이지 번호를 전달 받아 form에 설정된 검색 조건 값들을 초기화하여 QueryString으로 보내는 page() 함수 상품 목록 테이블 부분 ${items} 변수는 Controller 에서 전달 받은 Page 객체 .getContent() 메소드를 이용하여 Page 객체의 content 부분을 추출 상품아이디 상품명 상태 등록자 등록일 하단 페이지 부분 페이지 객체의 페이지 index 는 0부터 시작, 페이지 ..
[스프링 부트 쇼핑몰 프로젝트 with JPA] 8-1. [상품 관리] 상품 목록 조회 Querydsl
·
Web & Android/스프링 부트 쇼핑몰 프로젝트 with JPA
이 내용은 스프링 부트 쇼핑몰 프로젝트 with JPA 책을 학습한 내용입니다. 1. Qdomain 생성 Querydsl을 사용하기 위해서 Qdomain 생성 dependencies 부분 추가 build.gradle - [other] - [compileQuerydsl] 2. 상품 조회 조건 DTO 상품 조회 조건 상품 등록일 상품 판매 상태 상품명 또는 상품 등록자 아이디 상품 조회 조건을 담을 ItemSearchDto 클래스 생성 import kr.spring.item.constant.ItemSellStatus; import lombok.Getter; import lombok.Setter; import lombok.ToString; @Getter @Setter @ToString public class ..
[스프링 부트 쇼핑몰 프로젝트 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..
[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와 관련된 소스가 전혀 없..