728x90

BackEnd 67

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

Spring Batch

Spring Batch 대량의 데이터를 처리하는데 사용되는 오픈 소스 배치 프레임워크입니다. Spring 프레임워크의 일부로 개발되었으며, 데이터베이스, 파일 등과 같은 다양한 소스로부터 대량의 데이터를 읽어 처리하고, 가공한 데이터를 다시 저장하거나 출력하는 등의 작업을 수행하는데 주로 사용됩니다. 확장성과 성능 대량의 데이터를 효율적으로 처리하기 위한 다양한 기능과 패턴을 제공하여 성능과 확장성을 보장 Chunk 기반 처리 방식을 통해 대용량 데이터 처리를 안정적으로 수행 가능 트랜잭션 관리 작업의 성공 또는 실패 시 롤백과 재시작을 지원하여 데이터의 무결성과 안정성을 보장 Chunk 지향 처리 대용량 데이터를 처리할 때 데이터를 묶어서(Chunk) 트랜잭션 단위로 처리하므로 OutOfMemoryEr..

BackEnd/Spring Boot 2023.07.19

Interceptor, Filter 차이

Filter Interceptor 개념 Servlet 스펙에 정의된 개념 Spring MVC에서 제공하는 개념 동작 위치 Servlet 컨테이너 레벨 Spring MVC 인터셉터 체인 내부 적용 범위 모든 요청과 응답에 적용 특정 컨트롤러 메서드 호출 전후 다중 적용 가능 여부 가능 가능 (순차적으로 적용) 주요 사용 목적 요청과 응답 수정, 변환 요청 전처리, 후처리 작업 예시 요청 인코딩 변경, 헤더 추가 인증, 권한 검사, 로깅, 캐싱 등 의존성 Servlet 스펙에 의존 Spring MVC에 의존 사용 시점 Spring MVC 이전의 기술을 사용하는 경우 Spring MVC를 사용하는 경우

BackEnd/Spring Boot 2023.07.04

JPA 기본 log사용하기

JPA 쿼리 로그 출력 설정하기 JPA를 사용할 때, 개발 중에 쿼리 로그를 확인하면서 디버깅하는 것은 매우 유용한 기능입니다. MyBatis와는 달리 JPA는 기본적으로 쿼리 로그에 파라미터를 대체하여 출력하지 않습니다. 그러나 몇 가지 설정을 통해 보기 편하게 로그를 구성할 수 있습니다. 이번 글에서는 완벽하게 구성된 JPA 쿼리 로그를 확인하는 방법을 알아보겠습니다. 완성된 Query 확인 하는법 Show-JPA-Query-Log application.yml 파일 수정하기 아래와 같이 application.yml 파일을 수정하여 JPA 쿼리 로그 출력을 설정할 수 있습니다: 좀더 다양한 설정을 테스트 해보고 더 최상의 환경설정이 있는지 연구해 보겠습니다. spring: jpa: show-sql: t..

BackEnd/Spring Boot 2023.06.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 @Column 옵션

@Column 옵션 name (String) 데이터베이스 테이블에서 열의 이름을 지정합니다. 기본적으로 필드의 이름과 동일하게 매핑됩니다. unique (boolean) 해당 열의 값이 고유해야 하는지 여부를 지정합니다. 기본값은 false입니다. nullable (boolean) 해당 열의 값이 null 허용 여부를 지정합니다. 기본값은 true입니다. length (int) 문자열 열의 최대 길이를 지정합니다. 문자열 타입에만 적용됩니다. precision (int) 숫자 열의 전체 자릿수를 지정합니다. 숫자 타입에만 적용됩니다. scale (int) 숫자 열의 소수점 자릿수를 지정합니다. 숫자 타입에만 적용됩니다. insertable (boolean) 해당 열이 INSERT 작업에 참여해야 하는지 ..

BackEnd/Spring Boot 2023.06.10

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 GenerationType 속성

작성 계기 JPA를 공부 하면서 코드를 작성하던중 GenerationType.AUTO를 사용 하였습니다. 뭔가 auto_increments 가 적용 될거 같아서 사용하였지만 DB에 "hibernate_sequence" 테이블이 생성 되었습니다. (Mysql을 사용 하였습니다.) 그래서 뭐지 하다가 GenerationType 속성에 대해서 알아 보게 되었고 간단 하게 나마 정리 한 내용을 작성 하게 되었습니다. GenerationType이란? GenerationType은 JPA에서 엔티티의 주키(primary key)를 생성하는 방법을 지정하는 열거형(Enum)입니다. AUTO DB 에 따라 설정 변경됩니다. 예를 들면 Mysql은 AUTO_INCREMENTS, ORACLE : SEQUENCE 등으로 설정..

BackEnd/Spring Boot 2023.06.09

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
728x90