2026/05 6

[TIL] 코딩테스트에서 Arrays 클래스가 중요한 이유

코딩테스트를 풀다 보니 Arrays 클래스가 정말 자주 등장한다는 걸 느꼈다.처음에는 단순히 배열을 출력할 때만 사용하는 줄 알았는데, 실제로는:정렬배열 비교배열 복사이분탐색등 다양한 기능을 제공하는 유틸 클래스였다.사용하기 위해서는 아래 import가 필요하다.import java.util.Arrays;가장 많이 사용하는 메서드들1. Arrays.sort()배열 정렬.Arrays.sort(arr);코딩테스트에서 가장 자주 보는 메서드 중 하나였다.2. Arrays.toString()배열 출력.System.out.println(Arrays.toString(arr));디버깅할 때 굉장히 편하다.3. Arrays.fill()배열 전체를 특정 값으로 초기화.Arrays.fill(arr, -1);4. Array..

TIL 2026.05.28

[TIL] 코딩테스트를 풀다가 StringBuilder의 필요성을 직접 체감하다.

오늘 코딩테스트 문제를 풀다가 문자열을 뒤집는 문제를 만났다.바로 아래의 코드는 내가 작성한 방식이다.class Solution { public String solution(String my_string) { String answer = ""; for (int i = my_string.length() - 1; i >= 0; i--) { answer += my_string.charAt(i); } return answer; }}물론 이 방식도 동작은 한다.하지만 다른 사람들의 풀이를 보니 대부분 StringBuilder의 reverse() 메서드를 사용하고 있었다.class Solution { public String so..

TIL 2026.05.27

[Design] JPQL UPDATE 사용 시 findById()를 먼저 조회하는 이유

재고 차감 기능을 구현할 때, JPQL UPDATE 문을 사용하면 재고를 원자적으로 감소시킬 수 있다.예를 들어 다음과 같은 방식이다.@Modifying@Query(""" UPDATE Product p SET p.stockQuantity = p.stockQuantity - :quantity WHERE p.id = :productId AND p.stockQuantity >= :quantity""")int decreaseStockAtomic(Long productId, Integer quantity);위 쿼리는:상품 ID가 존재하고재고가 충분한 경우에만재고를 감소시킨다.그렇다면 findById()는 불필요할까?주문 생성 로직에서 다음과 같은 코드가 존재할 수 있다.Product pr..

[Architecture] setter 대신 Entity 메서드를 사용하는 이유

Spring Boot와 JPA로 쇼핑몰 프로젝트를 진행하면서 이런 코드를 작성하게 되었다.public void cancel() { this.orderStatus = OrderStatus.CANCELLED;}처음에는 이런 생각이 들었다."그냥 setter로 값 바꾸면 되는 거 아닌가?"예를 들면:order.setOrderStatus(OrderStatus.CANCELLED);이렇게 해도 동작은 똑같기 때문이다. setter 방식의 문제예를 들어 주문 취소를 setter로 처리한다고 해보자.order.setOrderStatus(OrderStatus.CANCELLED);현재는 단순히 상태 값만 바꾸기 때문에 큰 문제가 없어 보인다.하지만 나중에 주문 취소 규칙이 추가되면 이야기가 달라진다. 예를 들어:이미..

카테고리 없음 2026.05.15

[Study] JPQL에서 : 파라미터문법은 무엇일까?

🏕️ 상황재고 차감 로직을 구현하던 중 아래와 같은 JPQL을 작성하게 되었다.@Modifying@Query(""" UPDATE Product p SET p.stockQuantity = p.stockQuantity - :quantity WHERE p.id = :productId AND p.stockQuantity >= :quantity""")int decreaseStockAtomic(Long productId, Integer quantity);처음에는 특히 이 부분이 가장 이해하기 어려웠다.:quantity:productId이번 글에서는 JPQL의 :파라미터 문법이 무엇인지, 그리고 왜 사용하는지 간단하게 정리해보려고 한다.: 파라미터 문법이란?JPQL에서는 메서드의 파라미터 ..

[Performance] JPA N+1 문제 해결 과정

JPA N+1 문제를 직접 겪고 해결해본 경험Spring Boot로 간단한 주문(Order) - 상품(Product) 프로젝트를 만들던 중, 주문 목록 조회 기능에서 예상보다 많은 SQL이 실행되는 문제를 겪었다. 처음에는 단순히 “JPA가 자동으로 잘 처리해주겠지”라고 생각했지만, 실제 로그를 확인해보니 이른바 N+1 문제가 발생하고 있었다.이번 글에서는 내가 실제로 겪었던 상황과, 어떻게 원인을 파악하고 해결했는지 정리해보려고 한다.🏕️ 상황프로젝트는 간단한 쇼핑몰 형태였고, 주문은 하나의 상품을 참조하는 구조였다.Order Entity@Entity@Table(name = "orders")public class Order { @Id @GeneratedValue(strategy = Gene..