2024/07/01 2

Spring Boot: 사용 가능한 메모리보다 더 많은 데이터 쿼리하기

개발자로서 아직 이런 문제를 겪지 않았다면, 이 글이 도움이 될 수 있을 것 같습니다. 경력 중 어느 시점에서든, 메모리에 맞지 않는 결과를 반환하는 데이터베이스 쿼리를 수행하는 Spring Boot REST 엔드포인트를 만들어야 할 가능성이 큽니다. 이 글에서는 메모리 한계로 인해 전통적인 방식으로 구현할 수 없는 REST 엔드포인트의 예를 살펴보겠습니다.시나리오이 연습에서는 Customer, Order, OrderItem, Product를 포함한 간단한 시나리오를 사용합니다: 우리의 목표는 다음을 쿼리하고 반환하는 보고서를 생성하는 엔드포인트를 만드는 것입니다:백만 개의 Orders500만 개 이상의 OrderItems전통적인 구현다음과 같은 필드가 있는 DTO를 정의해 봅시다:@Datapublic ..

Development/Code 2024.07.01

Java 21의 레코드 패턴으로 클린 코드 작성하기

Java는 Java 14에서 레코드 타입(Record Type)을 도입했습니다. Java 21 버전에서는 레코드 클래스의 인스턴스를 분해하고 더 정교한 데이터 쿼리를 가능하게 하는 레코드 패턴(Record Patterns)이 도입되었습니다.레코드 타입이란 무엇인가?Java는 Java 14에서 레코드라는 특별한 타입을 도입했습니다. 레코드는 제한된 형태의 클래스 타입으로, 주로 데이터를 저장하는 목적으로 사용됩니다. 레코드는 클래스보다 간결합니다. 레코드 타입 정의의 예시입니다:// 레코드 타입 정의record Point(int x, int y) 위 코드는 아래와 같은 기능을 수행합니다:Point라는 레코드 타입을 선언합니다.변수 x와 y에 대한 private final 필드를 포함합니다.x()와 y()라..

Development/Code 2024.07.01