본문 바로가기

JAVA4

[JPA] Fetch와 Fetch Join Fetch전략 fetch전략은 특정 엔티티를 조회할 때, 연관관계에 있는 다른 엔티티를 «언제» 불러올까에 대한 옵션입니다. User와 Team가 양방향 관계를 갖고 있는 경우 FetchType이 EAGER일 경우, Team를 조회한 «직후» User까지 조회하게 됩니다. FetchType이 LAZY일 경우, Team를 조회하고 «추후» Team를 통해 User를 사용하려하면 그제서야 User를 조회하는 쿼리를 통해 조회합니다. 하지만 FetchType이 EAGER일 경우, N+1 문제가 발생하게 되고 이 N+1의 문제를 해결하기 위해서 Fetch Join을 사용하게 됩니다. N+1 문제란? 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의.. 2023. 9. 21.
5장 문제 발생에 대비하기 5-1 빠른 실패 class CruiseControl { static final double SPEED_OF_LIGHT_KMH = 1079252850; static final double SPEED_LIMIT = SPEED_OF_LIGHT_KMH; private double targetSpeedKmh; void setTargetSpeedKmh(double speedKmh) { if (speedKmh < 0) { throw new IllegalArgumentException(); } else if (speedKmh SPEED_LIMIT) { throw new IllegalArgumentException(); } // 일반적인 경로 targetSpeedKmh = speedKmh; } }위의 코드 처럼 매개변.. 2023. 3. 6.
java.util.function패키지가 제공하는 FunctionalInterface정리 람다식을 사용할 대마다 함수형 인터페이스를 매번 정의하기 불편해서 아예 라이브러리로 제공하는 것들이 있습니다. 자바8에서 제공하는 주요 Funcational 인터페이스는 java.util.function 패키지에 다음과 같이 있습니다. Function Supplier Consumer Predicate Operators Function 가장 기본적인 형태로 Object를 입력받고 Object를 리턴하는 매소드 입니다. 는 매개변수의 타입이고, 은 리턴 타입입니다. 호출하는 함수는 apply 입니다. @FunctionalInterface public interface Function { R apply(T t); default Function compose(Function 2023. 2. 9.
람다(lambda) 표현식 람다란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다. Java 8에 도입되었으며 기능 인터페이스를 정의하는 보다 간결하고 읽기 쉬운 방법을 제공합니다. 람다 표현식은 매서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있습니다. 람다의 특징 익명 람다는 보통의 메서드와는 달리 이름이 없습니다. 함수 람다는 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함하지만 클래스에 종속되지 않으므로 함수라고 부릅니다. 전달 메서드 인수로 전달하거나 변수로 저장할수 있습니다. 간결성 익명 클래스처럼 클래스 이름, 메서드 이름, 파라미터 타입, 반환 타입 등이 없기 때문에 코드가 간결합니다. 람다의 장점 코드.. 2023. 2. 9.