JPA 22

자바 ORM 표준 JPA 프로그래밍 - 값 타입

이전 포스팅에서는 JPA의 프록시와 연관관계에 대해 알아보았다. 이번 포스팅에서는 JPA의 데이터 타입에 대해 포스팅하려 한다😀 개요 JPA의 데이터 타입을 가장 크게 분류하면 엔티티 타입과 값 타입으로 나눌 수 있다. 엔티티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말한다. 📌 엔티티 타입은 식별자를 통해 지속해서 추적할 수 있지만, 값 타입은 식별자가 없고 숫자나 문자같은 속성만 있으므로 추적할 수 없다. 쉽게 비유하면 엔티티 타입은 살아 있는 생물이고 값 타입은 단순한 수치 정보다. 기본값 타입📙 @Entity public class Member { @Id @GeneratedValue privat..

Book Review 2023.01.12

자바 ORM 표준 JPA 프로그래밍 - 프록시와 연관관계

이전 포스팅에서는 JPA의 고급 매핑에 대해 알아보았다. 이번 포스팅에서는 프록시와 즉시 로딩, 지연 로딩 및 영속성 전이에 대해 알아보려고 한다😄 개요 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회한다. 하지만 자주 함께 사용하는 객체들을 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원한다. 또한, JPA는 연관된 객체를 함께 저장하거나 함께 삭제할 수 있는 영속성 ..

Book Review 2022.12.03

자바 ORM 표준 JPA 프로그래밍 - 다양한 연관관계

이전 포스팅에서는 연관관계 매핑에 대해 알아보았다. 오늘은 조금 더 깊게 들어가서 JPA가 제공하는 다양한 연관관계에 대해 알아보려고 한다😁 개요 엔티티의 연관관계를 매핑할 때는 다중성, 단방향인지 양방향인지, 연관관계의 주인을 누구로 삼을 것인지에 대해 고려해야 한다. 먼저 연관관계가 있는 두 엔티티가 일대일 관계인지 일대다 관계인지 다중성을 고려해야 한다. 다음으로는 두 엔티티 중 한쪽만 참조하는 단방향 관계인지 서로 참조하는 양방향 관계인지 고려해야 한다. 마지막으로 양방향 관계면 연관관계의 주인을 정해야 한다. 다중성의 종류는 다대일(@ManyToOne), 일대다(@OneToMany), 일대일(@OneToOne), 다대다(@ManyToMany) 매핑이 있다. 만약 다중성을 판단하기 어렵다면 반대 ..

Book Review 2022.10.30

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