본문 바로가기

분류 전체보기60

오늘의 노트 Arrays.asList() 와 List.of() 의 차이Arrays.asList() 는 Arrays 클래스 내부에 구현된 또다른 별개의 ArrayList를 구현하고 있으며, List.of() 는 mmutableCollections 객체의 내부 클래스인 ListN 객체를 구현한다. 즉, 둘 다 util 의 ArrayList 가 아니다.Arrays.asList() 는 변경이 가능하기 때문에 Thread-Safe 하지 않다. List.of는 완전 불변하기 때문에 쓰레드에 안전하다.Arrays.asList() 는 null 요소를 허용하고 List.of()는 null 요소를 허용하지 않는다.메모리는 List.of 가 덜 사용. 따라서 반 불변인 Arrays.asList 보단 완전 불변인 List.of 사용 권장.. 2025. 2. 16.
[Jpa/QueryDsl] QueryDsl 설정 및 조회 기능 구현 (+동적 정렬) querydsl을 활용한 기본적인 조회 기능 구현에 대해서 기록해보고자 한다.이전에 한 번 업무에서 querydsl을 간단히 다루는 경험을 한 적이 있는데, 그게 벌써 약 2년 전 일이 되었다.그런 만큼, querydsl 활용이 조금 걱정되었는데, 다행히 전에 구현했던 기억이 조금은 남아 있어서 + 간단한 조회 기능이라 수월하게 작업을 해보았다. Springboot 버전 3이 되면서 querydsl 연동도 간결해져서 작업하는데 수월했다.QueryDsl정적 타입을 이용해 sql 과 같은 쿼리를 생성할 수 있도록 도와주는 오픈소스 프레임워크쿼리를 문자열로 작성하는 것이 아닌 프레임워크에서 제공하는 API를 활용해 코드 형태로 작성해 쿼리를 생성해주므로, 타입 안정성이 보장되고 런타임 에러를 방지할 수 있다... 2025. 2. 16.
[TIL] 오늘 알게된 것 1. boolean 과 is prefixboolean 타입으로 클래스의 프로퍼티를 구성하는 경우, getter 메소드 생성에서 문제가 발생할 수 있다.예를 들어, isAuto 라는 이름의 프로퍼티를 생성하였을 경우, 자동으로 getter 메소드 생성(lombok 혹은 인텔리제이 사용)시 getter 메소드 명이 isAuto 가 된다.이 경우, 프로퍼티명이 자동적으로 auto라고 수정되는 문제점이 외부에서 발생할 수 있다.나의 경우, swagger 문서 연동시 request body에서 위 문제가 발생했다.해결방안getter 메소드 직접 생성Boolean wrapper 클래스 사용lombok 옵션 설정 (lombok.getter.noIsPrefix=true)생각해보기해결방안 중에 나는 2를 선택했다.Jav.. 2025. 2. 14.
[TIL]JPA Auditing JPA Auditing개요엔티티의 이벤트를 감시하는 역할을 수행한다.JPA Auditing 기능을 활용해 엔티티를 누가 언제 생성/수정했는지 자동으로 기록되게 할 수 있다.Auditing 적용 방법1. JpaConfig 생성@Configuration@EnableJpaAuditingpublic class JpaConfig { @Bean public AuditorAware auditorProvider() { return new UserAuditorAware(); }}빈으로 AuditorAware의 구현체를 등록한다.2. AuditorAware 구현체 생성public class AuditorAwareImpl implements AuditorAware { @Override .. 2025. 2. 13.