책소개
스프링 부트와 JPA를 활용하여 실제 이커머스 업계에서 활용되는 쇼핑몰 기술들을 직접 구현해볼 수 있게 구성하였다. JPA와 Thymeleaf에 대한 간단한 예제로 기본 개념과 사용법을 익히고 그 후 쇼핑몰의 기본적인 기능들을 구현해 가며 JPA와 스프링 부트를 자연스레 익힐 수 있다. "Just Do It" 컨셉을 통해 하나의 완성된 서비스를 만드는 것을 목표로 하며 복잡한 코드 없이 최대한 간결한 코드 위주로 작성하였다. 이 책을 참고하여 자신만의 포트폴리오를 만들어보는 것도 가능하다. 테스트 코드를 작성하면서 개발을 진행하는 TDD 방식을 적용하였기 때문에 실무지향적 특성까지 갖추었다.
저자소개
컴퓨터 공학을 전공하였으며, 현재 이커머스 회사에서 제휴사 상품 연동 및 어드민 개발을 맡고 있다. 하루에 몇천만 건의 데이터를 연동하면서 백엔드 엔지니어로 성장 중이다. 새로운 지식을 배우고, 배운 내용을 토대로 실제 서비스를 개발하여 사용자들에게 배포하는 데 관심이 많다.
현재까지 개발해서 사람들에게 배포해본 서비스가 3가지 정도 된다. 개인 블로그 운영이 인연이 되어 집필까지 진행하게 되었다.
목차
지은이의 말 베타테스터의 말 일러두기 1장 개발 환경 구축1.1 스프링 부트의 특징 1.2 JDK 설치 1.3 인텔리제이 설치 1.4 애플리케이션 실행하기 1.4.1 Spring Boot Project 생성하기 1.4.2 빌드 도구 1.4.3 설정 파일(application.properties) 1.4.4 Hello World 출력하기 1.5 Lombok 라이브러리 1.6 MySQL 설치하기 [함께 해봐요 1-1] application.properties 설정하기 [함께 해봐요 1-2] Hello World 출력하기 [함께 해봐요 1-3] 애플리케이션 포트 변경하기 [함께 해봐요 1-4] Lombok 라이브러리 적용하기 2장 Spring Data JPA2.1 JPA 2.1.1 JPA란? 2.1.2 JPA 동작 방식 2.2 쇼핑몰 프로젝트 생성하기 2.2.1 프로젝트 생성하기 2.2.2 application.properties 설정하기 2.3 상품 엔티티 설계하기 2.3.1 상품 엔티티 설계하기 2.4 Repository 설계하기 2.5 쿼리 메소드 2.6 Spring DATA JPA @Query 어노테이션 2.7 Spring DATA JPA Querydsl [함께 해봐요 2-1] 상품 클래스 생성하기_Ver01 [함께 해봐요 2-2] 상품 클래스 엔티티 매핑_Ver02 [함께 해봐요 2-3] 상품 Repository 작성 및 테스트하기 [함께 해봐요 2-4] 쿼리 메소드를 이용한 상품 조회하기 [함께 해봐요 2-5] OR 조건 처리하기 [함께 해봐요 2-6] LessThan 조건 처리하기 [함께 해봐요 2-7] OrderBy로 정렬 처리하기 [함께 해봐요 2-8] @Query를 이용한 검색 처리하기 [함께 해봐요 2-9] @Query-nativeQuery 속성 예제 [함께 해봐요 2-10] JPAQueryFactory를 이용한 상품 조회 예제 [함께 해봐요 2-11] QuerydslPredicateExecutor를 이용한 상품 조회 예제 3장 Thymeleaf 학습하기3.1 Thymeleaf 소개 3.2 Spring Boot Devtools 3.2.1 Automatic Restart 적용하기 3.2.2 Live Reload 적용하기 3.2.3 Property Defaults 적용하기 3.3 Thymeleaf 예제 진행하기 3.3.1 th:text 예제 3.3.2 th:each 예제 3.3.3 th:if, th:unless 예제 3.3.4 th:switch, th:case 예제 3.3.5 th:href 예제 3.4 Thymeleaf 페이지 레이아웃 3.4.1 Thymeleaf Layout Dialect dependency 추가하기 3.5 부트스트랩으로 header, footer 영역 수정하기 3.5.1 Bootstrap CDN 추가하기 3.5.2 Bootstrap Navbar Component 활용하기 [함께 해봐요 3-1] 웹 브라우저에서 Thymeleaf 파일 열어보기 [함께 해봐요 3-2] Thymeleaf 예제용 컨트롤러 클래스 만들기 [함께 해봐요 3-3] 서버용 Thymeleaf 파일 [함께 해봐요 3-4] pom.xml에 의존성 추가하기 [함께 해봐요 3-5] application.properties Live Reload 적용 설정 추가하기 [함께 해봐요 3-6] application.properties Property Defaults 설정 추가하기 [함께 해봐요 3-7] th:text를 이용한 상품 데이터 출력용 Dto 클래스 [함께 해봐요 3-8] th:text를 이용한 상품 데이터 출력용 컨트롤러 클래스 [함께 해봐요 3-9] th:text를 이용한 상품 데이터 출력용 thymeleaf 파일 [함께 해봐요 3-10] th:each를 이용한 상품 리스트 출력용 컨트롤러 [함께 해봐요 3-11] th:each를 이용한 상품 리스트 출력용 thymeleaf 파일 [함께 해봐요 3-12] th:if, th:unless를 이용한 조건문 처리용 컨트롤러 작성하기 [함께 해봐요 3-13] th:if, th:unless를 이용한 조건문 처리용 thymeleaf 파일 만들기 [함께 해봐요 3-14] th:switch, th:case를 이용한 조건문 처리용 thymeleaf 파일 [함께 해봐요 3-15] th:href를 이용한 링크 처리용 컨트롤러 [함께 해봐요 3-16] th:href를 이용한 링크 처리용 thymeleaf 파일 [함께 해봐요 3-17] th:href를 이용한 파라미터 데이터 전달용 thymeleaf 파일 [함께 해봐요 3-18] th:href를 이용한 파라미터 데이터 전달용 컨트롤러 작성하기 [함께 해봐요 3-19] th:href를 이용한 파라미터 데이터 전달용 thymeleaf 파일 [함께 해봐요 3-20] pom.xml에 Thymeleaf Layout Dialect 의존성 추가하기 [함께 해봐요 3-21] Thymeleaf 페이지 레이아웃 예제: 푸터 만들기 [함께 해봐요 3-22] Thymeleaf 페이지 레이아웃 예제: 헤더 만들기 [함께 해봐요 3-23] Thymeleaf 페이지 레이아웃 예제: 본문 레이아웃 [함께 해봐요 3-24] Thymeleaf 페이지 레이아웃 예제: thymeleaf 파일 만들기 [함께 해봐요 3-25] Thymeleaf 페이지 레이아웃 예제: 컨트롤러 클래스 작성하기 [함께 해봐요 3-26] 레이아웃에 Bootstrap CDN 추가하기 [함께 해봐요 3-27] 헤더 영역에 Navbar 추가하기 [함께 해봐요 3-28] 푸터 영역 수정하기 [함께 해봐요 3-29] CSS 적용하기 [함께 해봐요 3-30] CSS와 HTML 파일 연결하기 4장 스프링 시큐리티를 이용한 회원 가입 및 로그인4.1 스프링 시큐리티 소개 4.2 스프링 시큐리티 설정 추가하기 4.2.1 security dependency 추가하기 4.2.2 스프링 시큐리티 설정하기 4.3 회원 가입 기능 구현하기 4.4 로그인/로그아웃 구현하기 4.4.1 UserDetailsService 4.4.2 UserDetail 4.4.3 로그인/로그아웃 구현하기 4.5 페이지 권한 설정하기 [함께 해봐요 4-1] 스프링 시큐리티 로그인하기 [함께 해봐요 4-2] SecurityConfig 클래스 작성하기 [함께 해봐요 4-3] 회원 가입 기능 구현하기 [함께 해봐요 4-4] 회원 가입 기능 테스트하기 [함께 해봐요 4-5] 회원 가입 페이지 작성하기 [함께 해봐요 4-6] 회원 가입 컨트롤러 소스코드 작성하기 [함께 해봐요 4-7] 회원 가입 처리하기 [함께 해봐요 4-8] 로그인/로그아웃 기능 구현하기 [함께 해봐요 4-9] 로그인 테스트하기 [함께 해봐요 4-10] 로그인/로그아웃 화면 연동하기 [함께 해봐요 4-11] 페이지 권한 설정하기 [함께 해봐요 4-12] 유저 접근 권한 테스트하기 5장 연관 관계 매핑5.1 연관 관계 매핑 종류 5.1.1 일대일 단방향 매핑하기 5.1.2 다대일 단방향 매핑하기 5.1.3 다대일/일대다 양방향 매핑하기 5.1.4 다대다 매핑하기 5.2 영속성 전이 5.2.1 영속성 전이란? 5.2.2 고아 객체 제거하기 5.3 지연 로딩 5.4 Auditing을 이용한 엔티티 공통 속성 공통화 [함께 해봐요 5-1] 장바구니 엔티티 설계하기 [함께 해봐요 5-2] 장바구니 엔티티 조회 테스트하기(즉시 로딩) [함께 해봐요 5-3] 장바구니 아이템 엔티티 설계하기 [함께 해봐요 5-4] 주문 도메인 엔티티 설계하기 [함께 해봐요 5-5] 주문 영속성 전이 테스트하기 [함께 해봐요 5-6] 고아 객체 제거 테스트하기 [함께 해봐요 5-7] 주문 엔티티 조회 테스트하기(즉시 로딩) [함께 해봐요 5-8] 엔티티 지연 로딩 설정하기 [함께 해봐요 5-9] Auditing 기능을 활용한 데이터 추적하기 6장 상품 등록 및 조회하기6.1 상품 등록하기 6.2 상품 수정하기 6.3 상품 관리하기 6.4 메인 화면 6.5 상품 상세 페이지 [함께 해봐요 6-1] 상품 등록 구현하기 [함께 해봐요 6-2] 상품 수정하기 [함께 해봐요 6-3] 상품 관리 메뉴 구현하기 [함께 해봐요 6-4] 메인 페이지 구현하기 7장 주문7.1 주문 기능 구현하기 7.2 주문 이력 조회하기 7.3 주문 취소하기 [함께 해봐요 7-1] 주문 기능 구현하기 [함께 해봐요 7-2] 주문 기능 테스트하기 [함께 해봐요 7-3] 주문 호출 구현하기 [함께 해봐요 7-4] 구매 이력 [함께 해봐요 7-5] 주문 취소 기능 구현하기 [함께 해봐요 7-6] 주문 취소 테스트하기 [함께 해봐요 7-7] 주문 취소 호출 구현하기 8장 장바구니8.1 장바구니 담기 8.2 장바구니 조회하기 8.3 장바구니 상품 주문하기 [함께 해봐요 8-1] 장바구니 담기 구현하기 [함께 해봐요 8-2] 장바구니 담기 테스트하기 [함께 해봐요 8-3] 장바구니 담기 호출 구현하기 [함께 해봐요 8-4] 장바구니 조회하기 [함께 해봐요 8-5] 장바구니 상품 수량 변경하기 [함께 해봐요 8-6] 장바구니 상품 삭제하기 [함께 해봐요 8-7] 장바구니 상품 주문하기