JPA 28

Spring Data JPA와 기존 JPA의 차이점 및 사용법

JPA를 사용하면 무수히 많은 CRUD의 반복, 객체와 데이터베이스 매핑 관계의 반복 등 지루한 코드들에서 탈출할 수 있고 또 다른 장점들도 많이 존재합니다. 혹여나 기존 JPA를 모르신다면 해당 링크를 참고해주세요. 이 포스팅은 JPA를 좀 더 쉽게 사용할 수 있는 Spring Data JPA의 사용법을 초점으로 작성하였습니다. 개요 사실 Spring Data JPA와 순수 JPA의 차이점이라는 제목이 어울리는지는 잘 모르겠네요. Spring Data JPA는 JPA를 좀 더 쉽게 사용할 수 있게 도와주는 라이브러리라고 생각하시면 될 것 같아요. 하지만, 순수 JPA를 정확히 모르는 상황에서 Spring Data JPA를 사용하시는 것은 좋지 않습니다. Spring Data JPA에서는 많은 함수를 제..

JPA 2022.10.13

SpringBoot JPA 쇼핑몰 주문 검색

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 개요 BincoShop 마지막 기능인 주문 검색 기능 개발 포스팅을 하려 합니다. 사진과 같이 회원명이나 주문 상태(ORDER, CANCEL)로 검색할 수 있게 구현할 예정입니다. OrderSearch📙 @Getter @Setter public class OrderSearch { private String memberName; private OrderSt..

JPA 2022.09.19

SpringBoot JPA 쇼핑몰 주문 서비스 II

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 개요 주문 로직은 사용자가 회원, 상품, 수량을 선택하고 주문 시에 로직이 진행됩니다. 그럼 Service 단에서 비즈니스 로직을 어떻게 처리하는지 알아볼까요? Service📘 @Service @Transactional @RequiredArgsConstructor public class OrderService { private final OrderRepo..

JPA 2022.09.15

SpringBoot JPA 쇼핑몰 주문 서비스 I

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 Order Entity📘 public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrde..

JPA 2022.09.15

SpringBoot JPA 쇼핑몰 상품 서비스 개발

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 개요 회원 서비스에 이어서 상품 서비스를 개발합니다. 이전 포스팅과 비슷한 흐름이어서 간단하게 진행될 것 같습니다. 모든 포스팅은 김영한 님의 강의를 참고하였습니다😄 Entity 수정📔 @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "dtyp..

JPA 2022.09.14

SpringBoot JPA 쇼핑몰 회원 서비스 개발

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 개요 지난 포스팅까지는 엔티티 개발을 진행하였습니다. 오늘부터는 비즈니스 로직 개발을 진행하는데, 회원 서비스 먼저 개발을 진행하려 합니다. 포스팅의 모든 내용은 김영한 강사님의 강의를 참고했습니다😄 Repository📘 @Repository @RequiredArgsConstructor public class MemberRepository { privat..

JPA 2022.09.14

SpringBoot JPA 쇼핑몰 엔티티 개발Ⅱ

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 개요 이전 포스팅에 이어서 Category Entity를 개발합니다. 또한, 내장 타입으로 개발했던 Address를 변경 불가능하게 수정할 예정입니다. 모든 개발 과정은 김영한님의 강의를 통해 포스팅하였습니다😀 Category Entity🔆 @Entity @Getter @Setter public class Category { @Id @GeneratedVa..

JPA 2022.09.14

SpringBoot JPA 쇼핑몰 엔티티 개발Ⅰ

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 개요 지난 시간에 포스팅한 도메인과 테이블 설계에 이어서 엔티티 클래스들 먼저 개발을 진행합니다. 폴더 구조는 하단 사진과 같고, 만일 포스팅을 따라 하는 분이 계시다면 엔티티끼리 연관되는 부분이 많기 때문에 하단 끝까지 따라 하셔야 오류가 안 납니다😀 Member Entity🧍 @Entity @Getter @Setter public class Membe..

JPA 2022.09.13

SpringBoot JPA 쇼핑몰 도메인&테이블 설계

SpringBoot와 JPA, Thymeleaf를 사용하여 간단한 쇼핑몰을 구현하려 합니다. 프로젝트 생성이나 Gradle 빌드는 깃허브 BincoShop을 참고해주세요! 포스팅은 도메인&테이블 설계 -> 엔티티 개발 -> 회원 서비스 -> 상품 서비스 -> 주문 서비스 순으로 진행됩니다. 포스팅의 잘못된 부분은 언제든 댓글로 남겨주시면 수정하겠습니다😀 도메인 모델🔆 회원, 주문, 상품의 관계 : 회원을 여러 상품을 주문할 수 있고 한번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계이다. 하지만 다대다 관계는 잘 사용하지 않아서 위 그림처럼 주문 상품이라는 엔티티를 추가해서 일대다, 다대일 관계로 풀어냈다. 상품 분류 : 상품은 도서, 음반, 영화로 구분되는데 상품이라는 공통 속성..

JPA 2022.09.07

JPA 영속성 관리 Dirty Checking & Merge

김영한 선배님의 JPA 활용 강의를 듣다가 JPA 영속성 컨텍스트에 대해 궁금증이 생겨서 공부를 하게 되었습니다. 이번 포스팅은 [자바 ORM 표준 프로그래밍 - 김영한] 책을 참고하며 포스팅하였습니다😃 JPA Entity🔆 JPA는 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나뉩니다. 엔티티를 실제 사용할 때는 엔티티 매니저(em)를 통해 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 작업을 할 수 있습니다. 엔티티 생명주기⏳ 엔티티에는 총 4가지의 상태가 존재합니다. 비영속(new / transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 // 객체를 생성한 상태 (비영속) Member member = new Member(); member.setId("..

JPA 2022.09.06