![[인프런 알고리즘] Chapter 5, 7번 문제(교육과정 설계)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbjudd4%2FbtsI2IPu06d%2FAAAAAAAAAAAAAAAAAAAAAL8s0QweNHq823Q1tchPhEc4mkAq_ntAge1O6m53CE0L%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DDrFL0N2r4zHNQA0Dm2J8ir9ACiQ%253D)
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;public class sec05_07 { public static String solution(String sequence, String str) { Queue que = new LinkedList(); for (char c : sequence.toCharArray()) que.add(c); ..
![[Spring Data JPA] 쿼리 메서드 기능](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fcaedyj%2FbtsI1mSLGez%2FAAAAAAAAAAAAAAAAAAAAAJ6MLLV2GgxQ4alp15TbkNfB-ypIU26n20J_0Ix0FDvZ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3D6rcSmDK21sutux8IpFqCMh0hcTo%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.쿼리 메소드 기능 3가지메소드 이름으로 쿼리 생성메소드 이름으로 JPA NamedQuery 호출@Query 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의 메서드 이름으로 쿼리 생성인터페이스에 메서드만 정의하면 알아서 DB로 쿼리가 날라간다.public interface MemberRepository extends JpaRepository { List findByUsernameAndAgeGreaterThan(String username, int age);}위 메서드 이름에서 알 수 있듯이, 이름과 나이를 기준으로 회원을 정리하는 기능이다.당연히 이 방식은 인공지능이 개입하는 것은 아니고 이름의..
![[인프런 알고리즘] Chpater5, 6번 문제(공주 구하기)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FVqctB%2FbtsIZ7iCHQK%2FAAAAAAAAAAAAAAAAAAAAABOFST4PsCObs74WEs29dHcRWVcLHGwBH7202sWvah3Q%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DLc2ALAdwRgFz7ViLaMdCP4zNLhA%253D)
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { public static int solution(int N, int K) { Queue que = new LinkedList(); for(int i = 1; i 1) { ++co..
![[Spring Data JPA] Spring Data JPA](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fdkzxgg%2FbtsI0y0Jv3E%2FAAAAAAAAAAAAAAAAAAAAAP2d0mXwFjAEbepIdPuQK9urB2mrmC6OGRHJscofYtpo%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DC9xF0fXnzIzMmEapkXsFZ7FA4B0%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.Spring Data JPA는 스프링 프레임워크에서 제공하는 데이터 접근 계층(Data Access Layer)을 쉽게 구현할 수 있도록 지원하는 모듈이다.JPA(Java Persistence API)를 사용하여 데이터베이스와의 상호작용을 단순화하고, 보일러플레이트 코드를 최소화하는 데 중점을 둔다. 레포지토리 추상화Spring Data JPA는 JPA 엔티티를 관리하기 위한 기본적인 CRUD(Create, Read, Update, Delete) 작업을 자동으로 생성해주는 레포지토리 인터페이스를 제공한다.JpaRepository, CrudRepository, PagingAndSortingRepository와 같은..
![[인프런 알고리즘] Chapter 5, 5번 문제(쇠막대기)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbYXqxl%2FbtsI0sfkjCG%2FAAAAAAAAAAAAAAAAAAAAAJSYziyJz-SrLOGIivwd5Y-wVetRYCgO3WQcFBk20AqB%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DePMNKW6o2rrs1y06uaNWIiK%252BeOw%253D)
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class sec05_05 { public static int solution(String str) { int count = 0; int metalStick = 0; for(int i = 0; i 0) count += metalStick; } else //막대 끝 { --metalSt..
![[JPA] 컬렉션 조회 최적화(OneToMany)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcPEBjp%2FbtsIZJ2TTLZ%2FAAAAAAAAAAAAAAAAAAAAABa-gwpUru2z5Y4agoyHx7GTDB6vNTfN513TUdKEhRCh%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DlbeqblrU7bbOJNoeqJk%252F8xp9TcU%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.컬렉션인 일대다 관계(OneToMany) 를 조회하고, 최적화하는 방법 아래의 순서대로 최적화를 진행하는 것이 좋다.1. DTO를 반환2. 컬렉션 최적화 - 페이징 필요시 : hibernate.default_batch_fetch_size , @BatchSize 로 최적화 - 페이징 필요 없을시 : FETCH 조인으로 최적화3. DTO를 직접 조회(이 부분은 이해가 잘 되지 않아서 글에 적지 않음) DTO를 반환@RestController@RequiredArgsConstructorpublic class OrderApiController { private final OrderRepository ord..
![[JPA] 지연 로딩과 조회 성능 최적화(ManyToOne, OneToOne)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fdd6go1%2FbtsIZZEt1Wz%2FAAAAAAAAAAAAAAAAAAAAAKf-_-lXHghZFafGB3Tf22OWBMFVxQbeKCJ3Tz53kLIM%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DMwr6aNTDjvmCgGNPToeUW3DSdlU%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.API를 만들 때 엔티티 자체를 리턴하는 방식을 절대로 사용하면 안된다.기본적으로 엔티티를 DTO로 바꾸어서 리턴해야 한다. 또한 트래픽이 낮다면 굳이 성능 최적화가 필요 없겠지만, 사용자가 늘어난다면 성능 최적화를 고려해야한다. 성능 최적화 순서엔티티를 DTO로 변환하는 방법을 선택필요하면 FETCH 조인으로 성능을 최적화 한다. 대부분의 성능 이슈가 해결그래도 안되면 DTO로 직접 조회하는 방법을 사용최후의 방법은 JPA가 제공하는 네이티브 SQL이나 스프링 JDBC Template을 사용해서 SQL을 직접 사용 엔티티를 DTO로 변환@Datastatic class SimpleOrderDto { priv..
![[인프런 알고리즘] Chapter 5, 4번 문제(후위식 연산)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbCr79G%2FbtsI02Ue7oU%2FAAAAAAAAAAAAAAAAAAAAAJ0nRpDwEzbZfboKvSxSOrrvHUdTsMc6LvXkY8vMP9w5%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Dw94bNSUlejM5AJkfomX4HyBhUGA%253D)
이 알고리즘 문제는 인프런의 자바(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..