일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Today
- Total
목록Web/Spring (37)
기록
테스트 코드에서 assertThat을 사용할 때 가장 큰 장점은 가독성과 다양한 조건 메서드입니다. 아래 글에서는 assertThat과 함께 자주 사용하는 주요 메서드를 정리하고 예제 코드를 통해 각각의 메서드가 어떤 상황에 적합한지 설명하겠습니다.1. 기본 비교 메서드1-1. isEqualTo(expected)실제 값이 기대 값과 같은지 비교합니다. 가장 기본적인 비교 메서드입니다.assertThat(10).isEqualTo(10);assertThat("Hello").isEqualTo("Hello");1-2. isNotEqualTo(expected)실제 값이 기대 값과 같지 않은지 비교합니다.assertThat(10).isNotEqualTo(5);assertThat("Hello").isNotEqualT..
1. 문제 상황얼마 전, Kafka Consumer가 특정 메시지를 받아 DB에 저장하는 기능을 담당하는 서비스를 운영하던 중 Dto를 수정하는 일이 생겼습니다. 테스트 코드를 위해 생성자가 필요했고, 이에 DTO 클래스에 @Builder 어노테이션을 추가했습니다. 이를 통해 테스트 코드에서 MyDto.builder().dataId("testId").name("testName").build()와 같이 편리하게 객체를 생성할 수 있었습니다.수정된 코드는 다음과 같습니다:@Getterpublic class MyDto { private String dataId = "11111"; private String name = "22222"; // 추가 시작 @Builder public M..

1. 들어가며웹 애플리케이션 개발에서 프론트엔드와 백엔드를 통합하는 방식은 개발자에게 중요한 선택 중 하나입니다. Java 생태계에서는 Spring Boot와 같은 백엔드 프레임워크가 널리 사용되고, 프론트엔드에서는 React, Angular, Vue.js와 같은 자바스크립트 프레임워크가 주류를 이루고 있습니다.하지만 Vaadin을 사용하면 Java만으로 프론트엔드와 백엔드를 모두 개발할 수 있습니다. 이 글에서는 Vaadin의 특징을 소개하고, 간단한 게시판 애플리케이션 예제를 통해 실제로 Vaadin이 어떻게 동작하는지를 보여드리겠습니다. 2. Vaadin이란 무엇인가?Vaadin은 Java 기반의 풀스택 웹 프레임워크로, 백엔드와 프론트엔드 개발을 통합할 수 있는 강력한 도구입니다. 주요 특징은 다..
시작하면서QueryDSL을 사용하여 데이터를 조회할 때 DTO를 반환하는 방법에는 크게 두 가지가 있습니다: Projections.constructor를 사용하는 방법과 **new QUserResponse(...)**를 사용하는 방법입니다. 이 글은 새로운 도메인에 대한 쿼리를 작성하려는 과정에서 작성되었습니다. 기존 도메인들을 살펴보니 두 방식이 혼재되어 있어, 어떤 방법을 선택해 DTO를 매핑하는 것이 더 적합할지 고민이 생겼습니다. 1. Projections.constructor 사용Projections.constructor는 QueryDSL이 자동으로 DTO의 생성자를 호출하여 데이터를 매핑합니다. 예를 들어, 사용자 데이터를 단순히 가져와 응답 객체로 매핑하는 경우, 이 방식은 코드가 간결하고 ..

시작하면서JPA에서 @Query 어노테이션을 사용하여 쿼리를 작성하던 중 문법 오류를 겪었습니다. 이 오류의 원인은 바로 nativeQuery 옵션의 사용 방식에 있었습니다. nativeQuery는 JPQL(JPA Query Language)이 아닌 네이티브 쿼리(데이터베이스 종속적인 쿼리)를 사용하겠다는 의미입니다. 따라서 JPQL 문법으로 작성한 쿼리가 네이티브 쿼리로 처리되면서 문제가 발생한 것입니다.발생한 오류아래는 실제로 작성한 코드와 테스트 실행 결과입니다.@Query(value = "SELECT o FROM orders o " + "WHERE o.registeredDateTime >= :startDateTime " + "AND o.regist..
1. 서론: hawkBit와 Vaadin의 만남디바이스 소프트웨어 업데이트 관리를 위한 오픈소스 프로젝트인 hawkBit를 분석하는 과정에서 Vaadin 프레임워크를 발견하게 되었습니다. hawkBit은 Java 기반으로 작성된 백엔드와 웹 UI를 제공하는 프로젝트로, UI 구현에 Vaadin 프레임워크가 사용된 것이 인상적이었습니다. 이를 계기로 Vaadin에 대해 더 깊이 알아보고 학습을 시작하게 되었습니다.특히 hawkBit의 /hawkbit-simple-uiGit 주소 저장소는 Vaadin을 사용하여 간단한 배포 화면을 구성하고 있었으며, 다음과 같은 구조로 구성되어 있습니다.위 디렉토리 구조에서 볼 수 있듯이, AboutView.java, ConfigView.java, LoginView.java..

시작하면서스프링 프로젝트에서 QueryDSL을 사용해 데이터를 업데이트할 때, 테스트 코드가 예상과 다르게 동작해 당황한 경험이 있으신가요? 이번 글에서는 QueryDSL로 데이터베이스 업데이트 후 JPA 1차 캐시와 동기화되지 않는 문제를 해결한 과정을 공유합니다.문제 상황 개요QueryDSL을 사용하여 테이블의 데이터를 직접 업데이트하는 메서드를 작성한 후, 테스트 코드에서 기대한 대로 데이터가 조회되지 않는 문제가 발생했습니다.주요 동작 흐름단계 1: JPA로 엔티티를 저장할 때, 데이터베이스에 값을 저장하고 동시에 1차 캐시(영속성 컨텍스트)에 엔티티 상태를 유지합니다.단계 2: QueryDSL의 update() 메서드를 사용하여 데이터베이스의 값을 직접 수정합니다. 하지만 이 과정에서 JPA의 ..

시작하기로그인 시스템에서 중요한 과제 중 하나는 사용자 인증 토큰의 안전한 저장과 관리입니다. 이번 포스팅에서는 AWS Elasticache Redis를 활용하여 스프링 부트 프로젝트에 확장 가능한 인증 시스템을 구축하는 방법을 공유하려고 합니다. 이전 포스팅에서는 인메모리 Map을 사용해 로컬 환경에서 간단한 토큰 관리를 구현했습니다.([Web/Spring] - 테스트 환경에서의 In-Memory Map을 활용한 로그인/로그아웃 시스템 구현) 이번에는 이를 기반으로 Elasticache Redis로 확장하여 분산 환경에서도 안정적으로 인증 시스템을 운영하는 방법을 다룹니다.1. 소개Redis는 다음과 같은 이유로 인증 토큰 관리에 적합합니다:빠른 키-값 조회: 로그인 토큰의 저장과 조회 속도가 빠릅니다..