분류 전체보기 319

QueryDsl - 핵심만 정리

QueryDsl은 객체 지향적 쿼리 작성 프레임워크이기에 매우 편리하고,컴파일 시점에서 오류를 잡아준다. 또한 가독성이 매우 좋고, 동적 쿼리 작성도 매우 좋다. 의존성 //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.1.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"✔️ JPAQueryFactoryQueryD..

Back-End/QueryDsl 2024.08.14

백준 15686번 : 치킨배달 자바

🧫 문제 분석 ✔️ 출처치킨배달 골드 5 📖 문제 // 치킨 거리 = 집과 가장 까가운 치킨집 사이의 거리// 집 기준, 집은 치킨거리를 가짐// 도시의 치킨 거리 = 모든 집의 치킨 거리의 합// 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|// 0 빈칸 , 1 집 , 2 치킨 집// 집의 개수  치킨 집 중 M개를 골라야하기에 백트래킹이 필요하다. 중요한 것은 전체 치킨 집 수 중 M개를 뽑는 방법이다.  처음에 그냥 i = 0 으로 모든 치킨집을 순회하면서 조합을 만들어갔기에 시간초과로 실패했다.중요한 것은 m개의 치킨집을 효율적으로 뽑아서 치킨거리를 계산하는 것이다. 치킨집을 뽑을때 이전에 뽑았던 가게는 이미 뽑혔기에 굳이 또 방문할 필요없다. ..

백준 13549번 : 숨바꼭질 3 자바

🧫 문제 분석 ✔️ 출처숨바꼭질 3 골드 5 📖 문제 bfs는 가중치가 같으면 항상 최단거리이다. x - 1, x + 1, x * 2 로 x가 k가 될 때까지 이동한다.n >= k 일 시 (x - 1) 로만 k로 갈 수 있기에  이를 고려한다. 정답 : n - kn과 k 는 0 ~ 100,000 사이이다. x - 1, x + 1, x * 2 인 노드를 bfs로 x(수빈)이가 k(동생)을 찾을때까지 반복하여 탐색한다.   🔅 문제 풀이import java.io.*;import java.util.*;public class Main { static class Node { int cur, cost; public Node(int next, int cost) { ..

백준 2156번 : 포도주 시식 자바

🧫 문제 분석 ✔️ 출처포도주 시식 실버 1 📖 문제 동적 프로그래밍 문제이다.  문제를 보면1. 선택한 잔은 모두 마시고 원위치2. 연속으로 3잔 마시기 불가능 i = 3 부터 시작 1. 현재 잔 + dp[i - 2]2. 현재 잔 + 이전 잔 + dp[i - 3]3. dp[i - 1]    // 이전까지의 최댓값을 가진다.  이 세가지 중 max값을 찾으면 된다.    1. 현재 잔 + dp[i - 2]2잔을 마시고 한 칸 뛰고 한 잔을 마신 경우이다.  1 2 3 번째 잔을 연속해서 마실 수 없으므로 dp[1]의 값 즉, 0과 1 번째 잔을 마신 최댓값 을 더한다.  2. 현재 잔 + 이전 잔 + dp[i - 3] 한 잔을 마시고 한 칸 뛰고 연속으로 2잔을 마신 경우이다.dp[0] 잔까지 마시고..

baekjoon/DP 2024.08.07

백준 1806번 : 부분합 자바

🧫 문제 분석 ✔️ 출처부분합 골드 4 📖 문제 누적합 문제를 한번도 안풀어봐서 기본 개념을 익히고 풀어봤다. 여기서는 투 포인터 알고리즘을 사용한다.  시작 포인터 : start끝 포인터 : end  처음 start 와 end를 첫번째 요소 위치에 둔다.end를 움직일때마다 해당 end에 값을 sum에 더하고 그 값이 목푯값 s 이상인지 확인한다. sum >= s 이면 end - start 와 기존 count 중 더 작은 값을 취한다.       🔅 문제 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedR..

baekjoon 2024.08.01

스프링 데이터 JPA - 분석

✔️ 스프링 JPA 구현체 분석 org.springframework.data.jpa.repository.support.SimpleJpaRepository   @Repository // JPA 예외를 스프링이 추상화한 예외로 변환@Transactional(readOnly = true) // 서비스 계층에서 트랜잭션 시작시 해당 트랜잭션을 전파 받아서 사용public class SimpleJpaRepository ...{ @Transactional public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); return entity; ..

Back-End/JPA 2024.07.31

스프링 데이터 JPA - 확장 기능

✔️ 사용자 정의 리포지토리 구현스프링 데이터 JPA 외에 JPA 직접사용 JDBC TemplateQuerydsl 사용데이터베이스 커넥션 직접 사용 등 .. 인터페이스 메서드를 직접 구현하고 싶을 때 사용 // 사용자 정의 인터페이스public interface MemberRepositoryCustom { List findMemberCustom();} 사용자 정의 인터페이스 구현 클래스@RequiredArgsConstructorpublic class memberRepositoryImpl implements MemberRepositoryCustom { private final EntityManager em; @Override public List findMemberCustom() {..

Back-End/JPA 2024.07.31

백준 1074번 : Z 자바

🧫 문제 분석 ✔️ 출처Z 실버 1 📖 문제  문제에서 답을 줬다.  n-1 크기로 4등분 배열을 4 등분 하면서 구역을 4구역으로 나눈다.  (r,c) 의 위치가 어느 구역인지 판별후 해당 구역의 이전 구역들의 방문 수를 더하면서 n == 1 일때가지 진행한다.  내가 짠 코드는 문제에서 n-1 크기로 줄여가며 4등분하는 것을 활용해서 했더니 다른 사람들과 차이가 난다. 좀 복잡하게 풀었다.   🔅 문제 풀이import java.io.*;import java.util.*;public class Main { static int[][] arr; static int r; static int c; static int count = 0; public static void main..

baekjoon 2024.07.30

스프링 데이터 JPA - 페이징과 정렬, 벌크 수정

✔️  페이징과 정렬 페이징과 정렬 파라미터org.springframework.data.domain.Sort // 정렬 기능org.springframework.data.domain.Pageable // 페이징 기능 (내부에 Sort 포함)  특별한 반환 타입org.springframework.data.domain.Page // 추가 count 쿼리 결과를 포함하는 페이징org.springframework.data.domain.Slice // count 쿼리 없이 다음 페이지만 확인 가능 (내부적으로 limit + 1 조회)List(자바 컬렉션) : 추가 count 쿼리 없이 결과만 반환  Page 인터페이스public interface Page extends Slice { int getTotalPa..

Back-End/JPA 2024.07.29

스프링 데이터 JPA - 기본

✔️ 공통 인터페이스 설정JavaConfig 설정- 스프링 부트 사용시 생략 가능@Configuration@EnableJpaRepositories(basePackages = "jpabook.jpashop.repository")public class AppConfig {} 스프링 부트 사용시 @SpringBootApplication 위치를 지정(해당 패키지와 하위 패키지 인식)만약 위치가 달라지면 @EnableJpaRepositories 필요// T : 엔티티 타입// ID : 식별자 타입 (PK)public interface XxxRepository extends JpaRepository {}@Repository 애노테이션 생략 가능컴포넌트 스캔을 스프링 데이터 JPA가 자동으로 처리JPA 예외를 스프링..

Back-End/JPA 2024.07.29