Light Blue Pointer
본문 바로가기

분류 전체보기307

QueryDSL로 검색 기능 구현 + 쿼리 빌드 단계적으로 하기 + LocalDateTime을 Controller의 Parameter로 받을 때 주의할 점 QueryDSL 설정법은 여기로 QueryDSL 설정일단 gradle에 관련 설정들을 추가해준다plugins { id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'}configurations { compileOnly { extendsFrom annotationProcessor }}repositories { mavenCentral()}dependencies { implementation 'org.springfrgreedydeveloper.tistory.com 오늘 여러 조건에 따라서 검색을 해야하는 쿼리를 작성해야 했는데검색할때 쿼리가 null인 경우를 모두 메서드로 분리해서 하지 않고 null이거나 비어있으면 제외하고 쿼리를 빌드하는 코드를 작성해 보았다 .. 2024. 9. 5.
@EnableJpaAuditing 이 한 곳에서만 정의되어야 하는 이유 습관처럼 QueryDsl을 사용하기 위해 JPAConfig를 만들려고 했다@Configuration@EnableJpaAuditingpublic class JPAConfig { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory queryFactory() { return new JPAQueryFactory(entityManager); }}  그랬더니 다른 곳에서 이미 JPAAuditoing이 되고 있어서 안 된다는 에러가 떴다 overriding = true로 바꾸라는 제안도 있었지만 위험할 것 같아서 하지 않았다 찾아보니 동일한 모듈에 이게 있었다@Configura.. 2024. 9. 5.
QueryDSL 설정 일단 gradle에 관련 설정들을 추가해준다plugins { id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'}configurations { compileOnly { extendsFrom annotationProcessor }}repositories { mavenCentral()}dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j' implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' .. 2024. 9. 5.
SQL이란 무엇인가 SQL = Structured Query LanguageSQL is a set-based, declarative programming language, not an imperative programming language like C or BASIC. 하나하나 뜯어보면서 의미를 분석해 보았다StructuredSQL의 원래 이름은 SEQUEL(Structured English QUEry Language) → 상표 문제로 SQL로 이름을 바꿈문법이 영어와 같다는 사실을 강조하고 싶었던 것이라고 함Set-basedSet-Based vs Row-Based Database CodeSet-Based CodeOperations on Sets: Set-based code focuses on performing oper.. 2024. 8. 1.
Spatial Index 전환기 프로젝트에서 거리순 정렬이 필요했는데 기존에는 그냥 QueryDSL로 Order By 유클리드 거리를 하고 있었다.너무 비효율적이라는 생각이 들어서 더 좋은 방법이 없나 찾아보다가 공간 인덱스를 발견했다.https://www.baeldung.com/hibernate-spatial 결론부터 말하자면 적용 후 성능이 151ms 에서 63ms 으로 58.28% 개선되었다Hibernate-Spatial 개념 정리 → 링크 나에게 필요한 것은 특정한 좌표들을 비교하는 일이니까 Point를 선택해서 썼다우선 관련된 설정을 해준다 latitude와 longitude를 Point로 바꿔줬다⚠️주의⚠️경도 longitude → x위도 latitude → y    @Column private Double lati.. 2024. 8. 1.
Hibernate-Spatial 관련 개념 정리 공간 데이터공간 데이터는 포인트(Point), 선(Line), 폴리곤(Polygon) 과 같은 엔티티의 표현을 포함한다.이러한 데이터 타입은 JDBC 사양의 일부가 아니므로 JTS (JTS Topology Suite) 가 공간 데이터 타입을 나타내는 표준이 되었다.JTS 외에도 하이버네이트 스페이셜은 최근의 라이브러리인 Geolatte-geom 을 지원하며, JTS에서 사용할 수 없는 몇 가지 기능을 제공한다.두 라이브러리는 모두 하이버네이트-스페이셜 프로젝트에 이미 포함되어 있다. 어느 라이브러리를 사용할지는 단순히 데이터 타입을 어느 jar 파일에서 가져오는가의 문제이다.JTS( JTS Topology Suite)JTS 토폴로지 스위트는 벡터 지형을 생성하고 조작하기 위한 Java 라이브러리이다. 또.. 2024. 8. 1.
[백준] 구간 합 구하기 5 문제 주소https://www.acmicpc.net/problem/11660문제 설명N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.1 2 3 4234534564567여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.입력첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000).. 2024. 6. 23.
[백준] 구간 합 구하기 4 문제 주소https://www.acmicpc.net/problem/11659문제 설명수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.출력총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.제한1 ≤ N ≤ 100,0001 ≤ M ≤ 100,0001 ≤ i ≤ j ≤ N예제 입력 15 35 4 3 2 11 32 45 5예제 출력 11291일단 단순하게 짜봤는데 지금 상태에서는 누적합이라는 알고리즘이 왜 따로 분리되었는지 이해가 .. 2024. 6. 23.
[백준] 이전 순열 문제 주소https://www.acmicpc.net/problem/10973문제 설명1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 바로 이전에 오는 순열을 구하는 프로그램을 작성하시오.사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다.N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다.1, 2, 31, 3, 22, 1, 32, 3, 13, 1, 23, 2, 1입력첫째 줄에 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에 순열이 주어진다.출력첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다.예제 입력 141 2 3 4예제 출.. 2024. 6. 21.