Light Blue Pointer
본문 바로가기

분류 전체보기300

Spring과 STOMP를 이용해서 웹소켓 연결하기 Gradle에 필요한 설정 import // WebSocket implementation("org.springframework.boot:spring-boot-starter-websocket") implementation("com.fasterxml.jackson.core:jackson-databind") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") // Web Security implementation("org.spr.. 2024. 9. 26.
Spring에서 MongoDB 이용할때의 Pagination : MongoTemplate 으로 List<Model> , Page<Model> 리턴 Pageable pageable = new PageRequests(page, size);Query query = new Query().with(pageable);List list = mongoTemplate.find(query, XXX.class);return PageableExecutionUtils.getPage( list, pageable, () -> mongoTemplate.count(Query.of(query).limit(-1).skip(-1), XXX.class));이렇게 하면 mongoTemplate이 Page를 지원하지 않는다고 해도 PageableExecutionUtils을.. 2024. 9. 22.
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.