이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.컬렉션인 일대다 관계(OneToMany) 를 조회하고, 최적화하는 방법 아래의 순서대로 최적화를 진행하는 것이 좋다.1. DTO를 반환2. 컬렉션 최적화 - 페이징 필요시 : hibernate.default_batch_fetch_size , @BatchSize 로 최적화 - 페이징 필요 없을시 : FETCH 조인으로 최적화3. DTO를 직접 조회(이 부분은 이해가 잘 되지 않아서 글에 적지 않음) DTO를 반환@RestController@RequiredArgsConstructorpublic class OrderApiController { private final OrderRepository ord..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.API를 만들 때 엔티티 자체를 리턴하는 방식을 절대로 사용하면 안된다.기본적으로 엔티티를 DTO로 바꾸어서 리턴해야 한다. 또한 트래픽이 낮다면 굳이 성능 최적화가 필요 없겠지만, 사용자가 늘어난다면 성능 최적화를 고려해야한다. 성능 최적화 순서엔티티를 DTO로 변환하는 방법을 선택필요하면 FETCH 조인으로 성능을 최적화 한다. 대부분의 성능 이슈가 해결그래도 안되면 DTO로 직접 조회하는 방법을 사용최후의 방법은 JPA가 제공하는 네이티브 SQL이나 스프링 JDBC Template을 사용해서 SQL을 직접 사용 엔티티를 DTO로 변환@Datastatic class SimpleOrderDto { priv..
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;public class sec05_04 { public static int solution(String str) { Stack stack = new Stack(); for (Character c : str.toCharArray()) { if(Character.isDigit(c)) stack.push(Character.getNumeric..
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;import java.util.StringTokenizer;public class sec05_03 { public static int solution(int[][] board, int[] moves) { int count = 0; Stack stack = new Stack(); for(int i : moves) { ..
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드첫 번째 코드(스택 이용)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;public class sec05_02 { public static String solution(String str) { StringBuilder sb = new StringBuilder(); Stack stack = new Stack(); for(char c : str.toCharArray()) {..
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class sec05_01 { public static String solution(String str) { int left = 0; for(int i = 0; i 설명주어진 문자열 str의 각 문자를 순회하면서 열린 괄호 ’(’의 개수를 카운트하고, 닫힌 괄호 ’)’를 만나면 카운트를 감소시킨다. 이때, 닫힌 괄호가 열린 괄호보다 먼저 나오는 경우(즉, left 변수 left: ..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.JPA(Java Persistence API)에서 변경 감지(Dirty Checking)와 병합(Merge)은 엔티티 상태 관리를 위한 중요한 개념이다. 이 두 가지는 데이터베이스와 애플리케이션 간의 동기화를 효율적으로 관리하는 데 사용된다. 결론부터 말하면 두 방법중에 변경 감지를 사용하는 것이 더 좋다. 병합병합(Merge)은 JPA에서 준영속 상태의 엔티티를 영속성 컨텍스트에 포함시키고, 해당 엔티티의 상태를 데이터베이스에 반영하는 작업이다.이 과정은 데이터베이스에 이미 저장된 데이터를 수정할 때 사용된다.@PostMapping(value = "/items/{itemId}/edit")public String..
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드package inflearn_algorithm.chapter4;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class sec04_05 { public static int solution(int N, int K , Integer[] arr) { int count = 1; TreeSet reverseTreeSet = new TreeSet(Comparator.reverseOrder()); ..