일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AI
- 코틀린 코루틴의 정석
- 오블완
- 정보처리기사 실기
- PETERICA
- 정보처리기사실기 기출문제
- Kubernetes
- Linux
- mysql 튜닝
- IntelliJ
- CKA 기출문제
- 공부
- kotlin coroutine
- 티스토리챌린지
- CloudWatch
- APM
- kotlin
- minikube
- AWS EKS
- kotlin querydsl
- 정보처리기사 실기 기출문제
- CKA
- kotlin spring
- MySQL
- Spring
- 기록으로 실력을 쌓자
- Java
- Elasticsearch
- Pinpoint
- aws
- Today
- Total
목록Programming/Spring (57)
피터의 개발이야기
ㅁ 들어가며ㅇ Spring Data JPA를 사용할 때 개발자들이 자주 마주치는 고민 중 하나는 데이터베이스 스키마를 어떻게 관리할 것인가 하는 점이다. ㅇ 특히 개발 과정에서 엔티티 클래스가 자주 변경되는 경우, 이를 데이터베이스 스키마에 반영하는 작업이 번거로울 수 있다.ㅇ 이런 상황에서 JPA의 ddl-auto 기능은 매우 유용한 도구가 된다. ㅁ 관련 글ㅇ [Spring] JUnit5 조건부 테스트 실행방법 ㄴ JPA의 ddl-auto 기능과 함께 사용하면 개발환경 별 자동 테스트 환경을 구축할 수 있다. ㅁ ddl-auto란?ㅇ ddl-auto는 JPA가 제공하는 기능으로, 애플리케이션 실행 시 데이터베이스 스키마를 자동으로 관리해주는 옵션이다. ㅇ 이 기능을 사용하면 엔티티 클래스의 변경사항..
ㅁ 들어가며ㅇ 새로운 프로젝트에서 코틀린을 처음 쓰게 되었다.ㅇ 또한 Querydsl도 사용하고 있어서 연습을 위해 프로젝트를 생성하는 과정을 정리하였다.ㅇ Querydsl은 SpringBoot 버전 마다 설정법이 달라 참조하는 설명마다 설정 방법이 달랐다.ㅇ 내가 성공한 기준으로 이력을 남겨놓는다. ㅁ 프로젝트 생성ㅇ Spring Data JPA와 MySQL Driver, Elasticsearch를 추가하였다. ㅁ 의존성 추가import org.jetbrains.kotlin.gradle.tasks.KotlinCompileplugins { id("org.springframework.boot") version "3.1.0" id("io.spring.dependency-management") ve..
ㅁ 들어가며ㅇ Kotlin Spring 프로젝트를 Gradle로 빌드할 때 다음과 같은 경고 메시지가 나타나 이를 해결하는 과정을 이력으로 남겨 본다.ㅇ 검색을 해보니 인텔리제이 변경, Gradle 경고 모드 변경, Gradle 버전 변경 방법들이 있어 각각 적용해 보았다. ㅁ 경고 메시지Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.ㅇ 이 경고는 프로젝트에서 사용 중인 Gradle 기능 중 일부가 더 이상 사용되지 않으며, Gradle 9.0과 호환되지 않을 수 있음을 나타낸다. ㅇ 이 문제를 해결하기 위한 몇 가지 방법을 찾아 보았다. ㅁ해결 방법 1: IntelliJ IDEA 설정 변..
ㅁ 들어가며ㅇ JPA를 사용하면서 CascadeType.REMOVE와 orphanRemoval=true 옵션의 차이를 제대로 이해하지 못하였다.ㅇ 두 옵션 모두 엔티티 간의 관계를 관리하는 데 사용되지만, 그 목적과 동작 방식에는 차이가 있다.ㅇ 이 글에서는 두 옵션의 차이를 설명하고, 언제 어떤 옵션을 사용해야 하는지 알아보았다.ㅇ [JPA] CascadeType.REMOVE vs orphanRemoval=true 차이점 알아보기을 참조하여 작성하였다. ㅁ CascadeType.REMOVEㅇ 부모 엔티티가 삭제될 때, 연관된 자식 엔티티도 함께 삭제되도록 설정하는 옵션이다.@Entityclass Parent( @Id @GeneratedValue(strategy = GenerationType.IDE..
ㅁ 들어가며ㅇ JPA(Java Persistence API)에서 엔티티의 기본 키 생성 전략을 정의하는 데 사용되는 GenerationType에 대해 알아보자. ㅁ GenerationType.IDENTITY이란?ㅇ GenerationType은 JPA에서 엔티티의 기본 키 값을 자동으로 생성하는 방법을 지정할 수 있다.ㅇ @GeneratedValue 어노테이션과 함께 사용되며, 다음 다섯 가지 타입이 있다. ㅁ IDENTITY@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;ㅇ지속성 공급자가 데이터베이스 ID 열을 사용하여 엔터티에 대한 기본 키를 할당해야 함을 나타낸다.ㅇ 데이터베이스의 AUTO_INCREMENT 기능을 사용한다..
ㅁ 들어가며ㅇ [Spring] JPA Querydsl 세팅, Kotlin 작업을 하면서 알게 된 querydsl plugin에 대해 정리하였다. ㅁ Ewerk querydslㅇ com.ewerk.gradle.plugins.querydsl은 Gradle 프로젝트에서 QueryDSL을 쉽게 설정하고 사용할 수 있게 해주는 플러그인이다. 이 플러그인은 QueryDSL의 Q클래스 생성을 자동화하고, 관련 설정을 간소화해준다. ㅇ 인텔리제이의 Gradle 탭에 queryDSL 관련 메뉴가 생성된다. ㅁ 주요 기능ㅇ Q클래스 자동 생성 - JPA 엔티티를 기반으로 QueryDSL용 Q클래스를 자동으로 생성한다.ㅇ 소스 디렉토리 설정 - 생성된 Q클래스의 소스 디렉토리를 지정할 수 있다.ㅇ 의존성 관리 - Query..
ㅁ 들어가며ㅇ Gradle 프로젝트를 빌드할 때 테스트를 실행하지 않고 싶은 경우가 있다. ㅇ [Spring] JUnit5 조건부 테스트 실행방법에서는 OS, JAVA 버젼, Property, 환경변수에 다른 테스트 진행 방법을 알아보았다.ㅇ 이번 글에서는 빌드 시 테스트 전체를 스킵하는 방법을 정리하였다.ㅇ 이는 빌드 시간을 단축하거나 특정 상황에서 테스트를 임시로 건너뛰고 싶을 때 유용하다. ㅁ Gradle 명령어gradle build --exclude-task test// Gradle 5 이상// -x 옵션은 특정 태스크를 실행하지 않도록 gradle build -x test ㅁ build.gradle 테스트 스킵 설정// 모든 테스트 스킵test { exclude '**/*'}// 특정..
ㅁ 들어가며ㅇ QueryDSL을 사용하다 보면 fetchFirst()와 fetchOne() 메서드를 자주 마주치게 된다. ㅇ 이 두 메서드는 비슷해 보이지만 중요한 차이점이 있다. ㅇ 오늘은 이 두 메서드의 차이점을 정리하였다. ㅁ fetchFirst()ㅇ fetchFirst() 메서드는 쿼리 결과에서 첫 번째 결과만을 반환한다.ㅇ 주요 특징 - 항상 단일 결과를 반환한다. - 결과가 없으면 null을 반환한다. - 여러 결과가 있어도 예외를 발생시키지 않고 첫 번째 결과만 반환한다. - 내부적으로 LIMIT 1을 사용하여 데이터베이스에서 하나의 결과만 가져온다. ㅁ fetchOne()ㅇ fetchOne() 메서드는 쿼리 결과가 정확히 하나일 때 사용한다. ㅇ 주요 특징 - 결과가 정확히 하나일 때만 해..
ㅁ 개요ㅇ 테스트를 진행 시 특정 조건에 맞추어 테스트를 실행해야 할 때가 있다. ㅇ 예를 들어, 환경 변수, properties 설정 값, OS, JRE 버전 등에 따라 테스트를 실행할 필요가 있다.ㅇ JUnit5는 이러한 조건에 맞춰 테스트를 실행할 수 있는 다양한 방법을 제공한다. ㅇ 이번 글에서는 JUnit5의 조건에 따라 테스트를 실행하는 방법을 정리하였다.ㅁ EnabledOnOs // OsConditionTest @Test @EnabledOnOs(OS.WINDOWS) fun test1() { println("enabled on windows") } @Test @EnabledOnOs(OS.MAC, OS.LINUX) fun test2() { ..
ㅁ 들어가며ㅇ Spring의 테스트 시 자동으로 Rollback 되는 방법을 정리하였다. ㅁ Transactional 어노테이션ㅇ 테스트 클래스나 테스트 메서드에 @Transactional 어노테이션을 추가한다.ㅇ 이 어노테이션은 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후 자동으로 롤백을 수행한다.ㅇ 이렇게 하면 각 테스트가 독립적으로 실행되며, 이전 테스트의 데이터가 다음 테스트에 영향을 주지 않는다. ㅁ Rollback 어노테이션 사용ㅇ 기본적으로 @Transactional이 적용된 테스트는 롤백되지만, 명시적으로 @Rollback 어노테이션을 사용할 수 있다.ㅇ @Rollback(true)로 설정하면 테스트 후 롤백이 수행되고, @Rollback(false)로 설정하면 롤백이 수행되지 ..