분류 전체보기 273

스프링 데이터 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

백준 1027번 : 고층건물 자바

🧫 문제 분석 ✔️ 출처고층건물 골드 4 📖 문제 핵심사실상 수학문제라고 봐도 과언이 아니라 생각한다.기울기의 증감을 따져서 비교하면 되는데  빌딩중 하나를 기준으로 생각해보자. 좌측 부분은 기울기가 증가 하는 형태이고우측 부분은  기울기가 감소하는 형태이다.  대략 이렇게 볼 수 있다.  뒷건물에 대해서는 기울기 최솟값을 저장하고 최솟값보다 기울기가 크다면 그 빌딩은 볼 수 없는 빌딩이다. 앞 건물에 대해서는기울기 최대값을 저장하고최댓값보다 기울기가 작다면 그 빌딩은 볼 수 없는 빌딩이다.  문제에서 A-B 빌딩 선분이 다른 빌딩을 지나거나 접하지 않아야한다 했으므로 기울기가 같으면 그 빌딩은 볼 수 없다.  🔅 문제 풀이import java.io.*;import java.util.StringTo..

백준 1038번 : 감소하는 수 자바

🧫 문제 분석 ✔️ 출처감소하는 수 골드 5 📖 문제  핵심감소하는 수는 완전탐색 + 백트래킹 문제이다. 먼저 문제를 보면 321, 950 같은 수는 감소한다. 즉 각 앞 자리수보다 뒷 자리수가 더 작아야한다. ex)321이면 3보다 작은 수가 와야하고 여기서는 2 가 왔다2보다 작은수 1이 왔다. 수를 생각해보면 0~9 까지 있고 나올 수 있는  감소하는 수 최대 값은9 8 7 6 5 4 3 2 1 0 이다. (98억7654만..)즉 10자리수까지만 탐색하면 된다는 의미이다.  문제에서 주어지는 N번째 수가 무엇인지를 출력하면 된다.예제 1번을 예시로 보자 0~9까지는 각 수에 대한 각 번호이다. 0 은 0번째 , 1은 1번째그리고 10 은 10번째이고 11부터 19까지는 감소하는 수가 아닌 같거나..

백준 1759번 : 암호 만들기 자바

🧫 문제 분석 ✔️ 출처암호 만들기 골드 5 📖 문제  조건최소 한개의 모음 && 두 개 이상의 자음 알파벳이 사전 순서대로 정렬   ex) ba 불가능, ab 가능  알파벳을 배열에 담고 오름차순 정렬한 다음 길이를 주고 각 자리수에 맞게 완전탐색을 해본다. 처음(0일때) a일 경우 a를 방문했다고 하고 나머지 c i t s w 에 대해서 또 DFS를 한다. 중요한 것은 이전 사전 순이기에 이전 알파벳보다 현재 알파벳이 커야한다.(순서로 따지자면 뒷 번호여야 한다.)따라서 이전 알파벳에 대한 인덱스를 매개변수로 넘긴다.   그리고 모음의 만들어야하는 암호의 길이 L - 모음의 개수 = 자음의 개수이다.    🔅 문제 풀이import java.io.BufferedReader;import java.i..

API 학습 내용

api를 엔티티 그대로 반환하면 양방향 매핑시 무한 루프에 빠진다. @Jsonignore 을 사용하는것도 좋은 방법은 아니다. (항상 사용하지 않는것이 아니기에) DTO로 반환하자 💠  DTO로 조회하는 V4 ~ V6✔️ V3컬렉션 패치 조인 + 페이징 @BatchSize // 쿼리 1번 @GetMapping("api/v3.1/orders") public List ordersV3_page(@RequestParam(value = "offset", defaultValue = "0") int offset, @RequestParam(value = "limit", defaultValue = "100") int limit) { ..

Back-End/JPA 2024.07.15

JPA - JPQL

JPA는 SQL을 추상화한 JPQL은 객체 지향 쿼리 언어를 제공JPQL은 테이블이 아닌 엔티티 객체를 대상특정 데이터베이스 SQL에 의존 X즉, 객체 지향 SQL   참고 JPA를 사용하면서 JDBC 직접 사용 Template 등을 사용하게 되면SQL을 실행하기 전에 영속성 컨텍스트를 수동 플러시 하자   ✔️ 문법 select m from Member (as) m where m.age > 18엔티티와 속성은 대소문자 구분 O (Member, age 등)JPQL 키워드는 대소문자 구분 X (SELECT, select 등)엔티티 이름 사용 💠 집합과 정렬select COUNT(m), //회원수 SUM(m.age), //나이 합 AVG(m.age), //평균 나이 MAX(m.age), //최대 나이 MI..

Back-End/JPA 2024.07.12

JPA - 값타입

엔티티 타입@Entity 로 정의하는 객체데이터가 변해도 식별자로 지속해서 추적 가능   값 타입int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체식별자가 없고 값만 있으므로 변경시 추적 불가 💠 기본값 타입primitive type, wrapper type생명주기를 엔티티에 의존값타입은 공유 금지  primitive type(기본 타입)은 절대 공유 금지기본 타입은 항상 값을 복사  wrapper 클래스나 String 같은 특수한 클래스는 공유 가능 객체지만 변경 XInteger a = 10;Integer b = a;System.out.println("a = " + a);System.out.println("b = " + b); b = 20;Syste..

Back-End/JPA 2024.07.12