728x90

JPA 8

JPA & QueryDSL 사용한 Project

주문 관리 시스템 Project GIT : OrderFlow 기본 설명 API API POST /orders 주문 접수처리 : 구매자가 주문 접수 GET /orders/{id} 단일 주문조회 GET /orders 주문 목록조회 PUT /orders 주문 완료처리 : 판매자가 주문 완료 테스트 test.java.com.order.flow.OrdersControllerTest.java 에서 실행 및 결과 확인 주문 접수 처리시 재고 부족시 : Exception 처리 (Random Data이다 보니 성공시 Check 만 현재 구현) Multi Thread로 동시성 테스트 필요 -> // TODO Branch master feature/** 개발 완료 된 Branch Core feature/** 대문자 기능 개..

BackEnd/Spring Boot 2023.08.11

JPA Entity여러 경우 적용_1

소개 JPA-적응기1에 작성된 내용을 기반으로 작성하였으며 이후 총 정리 및 사용 후기 등을 JPA-적응기2에 올릴 생각입니다. 또한 추후에 어떤 기술을 추가로 사용 해볼것인지도 같이 작성하겠습니다. 개발 환경 개발 소개 : JPA-적응기1 ERD : JPA-e-commerce GitHub : jpa-e-commerce DDL과 Entity 비교 예시들은 기본 Entity, 공통 Entity, 멀티키 Entity 만 작성 되어 있고 그외에는 Github 로 들어가서 확인해 주시면 감사하겠습니다. common 공통으로 들어가는 Column은 상속 받아 사용한다. 다른 방법으로 @Embeddable 을 사용하여 변수 처럼 사용 할수있다. Entity // 다른 Entity에서 사용시 "extends Comm..

BackEnd/Spring Boot 2023.06.11

JPA 테스트 환경 구축

테스트 환경 구축 JPA를 사용하더라도 Controller, Service를 테스트를 해야 하고 이를 위해 테스트 환경을 구축 하였고 이를 정리한 내용입니다. 테스트 구축 순서 테스트 구축시 환경 프로젝트 구조 src └───test ├───java │ └───com │ └───jpa │ └───test │ └───service │ ServiceTest.java │ └───resources application-test.yml Dependency dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-..

BackEnd/Spring Boot 2023.06.10

JPA의 ddl-auto 속성과 그 특징

ddl-auto 옵션 JPA를 사용할 때, ddl-auto라는 속성을 설정하여 데이터베이스의 스키마(DATABASE SCHEMA)와 JPA 엔티티 클래스의 매핑을 자동으로 처리할 수 있습니다. 설정 방법 application.yml OR appliaction.properties 에 "spring.jpa.hibernate.ddl-auto : 옵션" 을 작성하여 사용한다. 옵션 내용 create-drop 운영 환경 : DEV 동작 시점 : 애플리케이션 실행 시 및 종료 시 동작 내용 : 실행 : 기존의 동일한 이름의 테이블이 존재하면 테이블 삭제 후 생성 종료 : 스키마 삭제 update 운영 환경 : QA 동작 시점: 애플리케이션 실행 시 동작 내용: 데이터베이스 스키마 업데이트 (변경된 부분만 반영) c..

BackEnd/Spring Boot 2023.06.09

영속성 이란?

작성 계기 JPA에서 영속성이라는 개념이 중요 하다고 생각한다. 그래서 영속성에 관한 내용만 따로 간단하게 나마 정리를 한다. 영속성 이란? 내가 이해한 영속성은 이러하다. 객체를 메모리에서 DB에 저장 하거나 DB에서 메모리로 로드 하는 과정 메모리 메모리는 JVM Heap Memory에 저장이 된다. 1차 캐쉬 Request 가 종료되면 삭제 된다. 2차 캐쉬 Request가 종료 되면 삭제 되지 않는다. 종료 시점을 설정할수있다. DB에서 데이터를 가져올때 캐쉬에 저장 되며 로직 실행중에 같은 데이터가 필요하면 DB에 접근이 아니라 캐쉬에서 먼저 가져와 데이터를 변경한다. 1차 캐쉬 & 2차 캐쉬 장단점 1차 캐쉬 장점 JVM Heap 메모리에 위치 하여 접근 속도가 빠르다. 동일한 Transact..

BackEnd/Spring Boot 2023.05.21

JPA Entity 작성_1 (공통, 같은 테이블)

1. 공통 Entity JPA를 사용하면 데이터베이스의 테이블과 자바 객체를 매핑할 수 있습니다. 때로는 여러 개의 엔티티에서 공통으로 사용되는 필드를 가지는 공통 엔티티를 만들고 싶을 수 있습니다. 이러한 상황에서는@MappedSuperclass 사용하여 공통 엔티티를 생성할 수 있습니다. @MappedSuperclass public class CommonEntity { @Column private Date registDate; @Column private Date modDate; } 2. 같은 테이블에서 ID를 설정 할때 보통 카테고리나 댓글을 만들때 대댓글, 부모 카테고리를 선언하기도 하는데 같은 테이블 내에서 선언한다. 이를 위해 아래와 같이 선언하면된다. @Entity @Table(name = ..

BackEnd/Spring Boot 2023.05.15

JPA 응용 방법 _ Specification_1

JPA 응용 기본으로 제공되는 Repository CrudRepository PagingAndSotringRepository JpaRepository 만으로는 모든 Query를 처리하기에 매우 한계가 있다. 예를 들면 Mybatis는 xml 파일에서 if, choose, where, set 등 수많은 옵션? 을 제공하는데 JPA도 이와 비슷하게 구현할수 있다. Entity JPA 응용 방법 _ Specification에서 사용될 기본 Entity입니다. 기본 Repository public interface UserRepository extends Repository { // Create, Update User save(User user); // Read // Find By Method는 단순할 경우에만..

BackEnd/Spring Boot 2023.04.17

JPA 간단 사용법

JPA 기본적으로 사용 하는 methods와 같이 사용을 한다. Repository interface를 만들고 하단 interface를 extends하여 사용한다. Repository JPA에서 제공하는 가장 기본적인 인터페이스로, 엔티티의 저장, 조회, 삭제 등의 기본적인 CRUD 기능을 제공 하지만 페이징 기능이나 정렬 기능 등이 없습니다. CrudRepository Repository 인터페이스를 상속하여 CRUD 기능을 제공하는 인터페이스 save(), findOne(), delete() 등의 기본적인 CRUD 메서드 외에도 findAll(), count(), exists() 등의 메서드를 제공합니다. PagingAndSortingRepository CrudRepository 인터페이스를 상속하여..

BackEnd/Spring Boot 2023.04.17
728x90