JMeter 설치mac 기준으로 jmeter를 설치하는 방법입니다.mac에서는 brew를 통해 간단히 설치하여 사용합니다.brew install jmeteropen /opt/homebrew/bin/jmeterJMeter 테스트 용어Thread Group: 테스트에 사용될 스레드 개수 (쓰레드 1개당 사용자 1명)Sampler: 사용자의 액션 (ex: 로그인, 게시물 작성)Listener: 응답을 받아 리포팅, 검증, 그래프 등 다양한 처리Configuration: Sampler or Listener가 사용할 설정 값 (ex: 쿠키, JDBC 커넥션)Assertion: 응답 확인 방법 (응답 코드, 본문 내용)JMeter 설정 방법1. Thread Group (사용자, 스레드 설정)Thread Proper..
JPA 기본전략을 이해하고 데이터베이스 Default 값 설정 및 데이터 저장 시 설정한 기본값으로 저장하는 방법에 대해 정리하고자 합니다.!!문제 상황Spring Data JPA 라이브러리 ORM을 통해 데이터베이스 기본값을 설정하는데 올바르게 설정되지 않는 문제가 있었습니다. 기존 코드@Entity@Getter@Builder(toBuilder = true)@AllArgsConstructor@NoArgsConstructor(access = AccessLevel.PROTECTED)@Table(name = "application_tb")public class Application extends BaseTimeEntity { @Id @GeneratedValue(strategy = Generatio..
Spring Data Jpa를 사용하는 중 Kindergarten, Recruit, Lottery의 3개의 엔티티를 통해 2개의 조건을 그룹핑하고 Count() 해야 하는 쿼리가 필요했습니다.이를 JPA를 작성하는 경우 긴 JPQL 코드로 가독성이 떨어지고 제대로 작성되었는지 컴파일 시점에서 문법 오류가 불가능하다고 생각되어, QueryDsl을 통해 위 문제를 해결하면서 필요한 쿼리를 생성하였습니다.배운 점ORM을 통한 2개의 그룹핑과 개수 카운트 및 총 개수 구하기실제 SQL 쿼리 작성과 공식문서를 통해 지원하는 기능 적용하여 해결하기불변성 객체를 유지하면서 Response DTO로 파싱 하기쿼리 확인하기 실제 SQL 작성select r.kindergarten_id, r.age_class, count(..
JDK (Java Development Kit)JDK는 자바 개발 키트의 약자로 개발자들이 자바로 개발하는 데 사용되는 SDK 키트이다.📌 SDK 란 Software Development Kit의 약자로, 소프트웨어 개발을 위해 도구와 라이브러리, 문서, 샘플 코드 등을 포함하는 패키지 JDK 안에는 자바 개발 시 필요한 라이브러리와 javac, javadoc 등의 개발 도구들을 포함되어 있습니다.자바 프로그램 실행을 위한 JRE도 함께 포함되어 있습니다.JDK 버전 표기Java SE (Standard Edition)표준 에디션의 자바 플랫폼으로 자바 언어의 핵심 기능을 제공Java EE (Enterprise Edition)대규모 기업용 에디션, 기업 환경을 위한 대규모 솔루션 개발Java ME (Mi..
기존 Dockfile을 통해 도커 이미지를 빌드하고 푸쉬하는 방식에서 Gradle 플러그인 Jib을 통해 빌드 시간을 단축하고자 빌드 방식을 변경해 보았습니다. Jib을 통해 빌드된 이미지를 실행하면서 겪은 시행착오를 기록하고자 합니다.트러블 슈팅문제 상황Error: Unable to access jarfile app.jar 기존 Dockerfile을 통해 빌드와 이미지를 생성하는 방식에서 JIB 빌드 방식으로 변경하여 이미지를 생성했습니다. JIB으로 생성한 이미지를 Run 했을 때, 위와 같은 오류가 발생하여 올바르게 Spring Server를 실행시킬 수 없는 오류가 있었습니다.logs를 찍어봐도 별다른 오류가 없고 app.jar 파일에 접근할 수 없다는 에러 메시지만 있어 당황스러웠습니다. 또한,..
Jib 이란Jib은 Docker Daemon 없이 자바 애플리케이션에 최적화된 도커 이미지를 빌드하고 Docker 허브 or 외부 레지스트리에 저장하는 플러그인입니다.Gradle, Maven과 같은 빌드 툴과 함께 사용됩니다. 왜 Docker Daemon이 필요 없는가!1. 빌드 방식 차이Dockfile을 통한 전통적인 방법 : Docker에서는 Dockerfile을 작성하고, docker build 명령어를 통해 이미지를 빌드합니다. 해당 과정에서 Docker Daemon이 필요하며, 도커 데몬을 통해 이미지를 빌드하고 레이어를 관리합니다.Jib 방법: Jib은 직접적으로 이미지를 빌드하여 Docker Daemon과 상호작용하지 않습니다. Jib은 자바 애플리케이션을 직접 분석하여, Docker 이미지..
배운 점 및 느낀 점기존에는 편리한 Spring Data JPA만 사용하다가 “가독성 측면”, “컴파일 시점에서 오류 확인”, “조건 메서드 재사용” 등 여러 장점을 가진 QueryDSL을 사용하게 되었습니다. 페이징, 검색, 필터링 조건을 적용한 쿼리문을 작성하면서 QueryDSL을 사용하는 이유와 장점을 느꼈습니다. 이를 통해 상황에 따라 효율적으로 Spring Data JPA와 QueryDSL을 사용할 수 있게 되었습니다.익힌 QueryDSL1. PageableExecutionUtils을 통해 Count 쿼리 최적화2. 검색 및 필터링 조건 적용3. DTO 클래스로 한 번에 변환Controller: 검색, 필터링, 페이징 API@GetMapping("/recruits/applications")pub..
PDF 파일 다운로드 API1단계데이터베이스에서 PDF 파일에 넣을 데이터 조회하기2단계조회한 데이터를 Thymeleaf 템플릿 엔진을 통해 HTML에 랜더링 해주기3단계생성된 HTML를 “flying-saucer-pdf” 라이브러리를 통해 PDF 파일로 변환하기(위 라이브러리 말고도 “itextpdf”가 있음) build.gradle// pdfimplementation("org.xhtmlrenderer:flying-saucer-pdf:9.1.20")https://mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf PdfController.class@Operation(summary = "모집 결과 PDF 파일로 다운하기", description..