스프링 JPA를 이용하여 책 쇼핑몰을 만들어보자.게시판보다 조금 더 복잡한 구조의 쇼핑몰 프로젝트를 진행하며 JPA 개발 구조를 익히기 위함2022년 2월 20일 ~운영체제: MACIDE: 인텔리제이(IntelliJ)JDK 버전: 11스프링부트 버전: 2.6.3데이터베
Spring Initializr스프링부트 프로젝트를 쉽게 만들기 위해 Spring Initializr 사이트에서 템플릿을 다운로드해서 임포트 하시면 됩니다. 제가 알기론 인텔리제이 Ultaimate 버전에서는 프로젝트 만드는 기능을 따로 지원하는 것으로 알고 있는데,
엔티티란 데이터베이스의 테이블에 대응하는 클래스라고 생각하면 됩니다. @Entity가 붙는 클래스는 JPA에서 관리하는 엔티티라고 합니다.해당 도메인들을 관리할 domain 패키지를 만들고 그 하위 패키지로 items를 만들겠습니다.enum 클래스를 사용하면 연관된 상
Thymeleaf Layout Dialect를 이용하면 하나의 레이아웃을 여러 페이지에 똑같이 적용할 수 있습니다. 공통적으로 적용되는 레이아웃을 미리 만들어놓고 현재 작성 중인 페이지만 레이아웃을 끼워넣으면 됩니다.위에서 만든 페이지를 확인하기 위해 web이라는 패키
해당 의존성을 추가하고 라이브러리를 받아옵니다.애플리케이션을 실행하고 기존에 작성했던 localhost/thymeleaf/ex URL에 접근했을 때, 스프링 시큐리티에서 제공하는 로그인 페이지로 이동됩니다. 스프링 시큐리티에서 기본적으로 제공하는 아이디는 user이고,
1. UserDetailsService UserDetailService 인터페이스는 데이터베이스에서 회원 정보를 가져오는 역할을 담당합니다. loadUserByUserName() 메소드가 존재하며, 회원 정보를 조회하여 사용자의 권한을 갖는 UserDetail 인터페
엔티티들은 대부분 다른 엔티티와 연관 관계를 맺고 있습니다. JPA에서는 엔티티에 연관 관계를 매핑해두고 필요할 때 해당 엔티티와 연관된 엔티티를 사용하여 좀 더 객체지향적으로 프로그래밍할 수 있습니다.🐢 연관 관계 매핑을 할 때는 2가지만 기억하세요. 북치기 박치기
영속성 전이(cascade)란 엔티티의 상태를 변경할 떄 해당 엔티티와 연관된 엔티티의 상태 변화를 전파하는 옵션입니다. 이때 부모는 One에 해당하고 해당 자식은 Many에 해당합니다. 영속성 전이 옵션을 부분별하게 사용할 경우 삭제되지 말아야 할 데이터가 삭제될
OrderItem을 조회하기 위해 JpaRepository를 상속 받는 OrderItemRepository 인터페이스를 생성합니다. 테스트 코드에서 orderItem 데이터를 조회하면 콘솔창에서 엄청나게 긴 쿼리문을 볼 수 있습니다. orderItem 엔티티 하나를 조
이전에 상품(Item) 엔티티 클래스를 만들었었는데, 이번에는 상품의 이미지를 저장하는 상품 이미지 엔티티를 만들겠습니다. 다음은 상품 등록 및 수정에 사용할 데이터 전달용 DTO 클래스를 만들겠습니다.of(entity) : 엔티티를 DTO로 변환하는 작업을 위해 만든
등록된 상품을 불러오는 메소드를 추가합니다.@Transactional(readOnly = true) : 상품 데이터를 읽어오는 트랜잭션을 읽기 전용으로 설정합니다. 이럴 경우 JPA가 더티체킹(변경감지)을 수행하지 않아서 성능을 향상 시킬 수 있습니다.상품 수정 페이지
챕터7 안에 시리즈를 마무리하고 싶었는데....정리하다 보니 점점 길어지네요그래도 잘 마무리 해보겠습니다.상품 관리 화면에서는 상품 조회하는 조건을 설정 후 페이징 기능을 통해 일정 개수의 상품만 불러오며, 선택한 상품 상세 페이지로 이동할 수 있는 기능까지 구현 해보
메인 페이지 구현도 상품 관리 메뉴 구현과 비슷합니다.@QueryProjection : 생성자에 해당 어노테이션을 선언하면 Querydsl로 결과 조회시 MainItemDto 객체로 바로 받아올 수 있습니다.메인에서 사용할 getMainItemPage() 메소드를 작성
고객이 상품을 주문하면 현재 상품의 재고에서 주문 수량만큼 재고를 감소시켜야 합니다. 또한 주문 수량이 현재 재고 수보다 클 경우 주문이 되지 않도록 구현하겠습니다.상품의 주문 수량보다 재고의 수가 적을 때 발생시킬 exception을 정의하겠습니다. exception
상품 상세 페이지에서 장바구니에 담을 수량을 선택하고 장바구니 담기 버튼을 클릭할 때 상품이 장바구니에 담기는 기능을 먼저 구현하겠습니다. 회원 한 명당 1개의 장바구니를 갖으므로 Cart 클래스에 회원 엔티티를 파라미터로 받아서 장바구니 엔티티를 생성하는 로직을 추가