전체 글 (66) 썸네일형 리스트형 QueryDSL에서 SubQuery 에는 limit 를 사용 할 수 없다. SubQuery 종류 중from 절에 사용하는 인라인뷰는 지원하지 않으니 당연히 limit를 사용할 수 없고select의 Scalar SubQuery 나 where 절 SubQuery에 limit 사용이 안된다는 것을 알게 되었다. Scalar SubQuery에서 limit 분실select( new QModel( orders.orderId, JPAExpressions.selectDistinct(orderHistory.message) .from(orderHistory) .where(orderHistory.orderId.eq(orders.orderId)) .orderBy(orderHistory.createDateTime.. Mysql(Maraidb) 실행 계획 살펴보기 TL;DR 쿼리문 앞에 explain을 붙여 실행하는 것으로 실행 계획을 볼 수 있다. key 항목에 있는 값이 동작한 인덱스이다 type 항목의 있는 값은 const(좋음) -> eq-ref -> ref -> range -> index -> all(안 좋음) 순이다. extra 항목의 값은 동작 방식을 알려주며 인덱스만을 사용했는지, 디스크까지 접근했는지 등을 알려준다. MySQL(Mariadb) 서버는 클라이언트로부터 오는 요청을 처리하기 위해 Parser, Optimizer, Chches 등 수행하는 DB(MySQL, Mariadb) Engines과 실제 데이터를 디스크에 저장하고 조회하는 Storage Engines로 구성되어 있으며 옵티마이저는 요청한 쿼리를 어떤 실행 계획으로 실행했을 때 비.. JpaRepository 가 아닌 Repository를 상속 받아 CQRS 로 분리하기 @Repository public interface MemberRepository extends JpaRepository, CustomMemberRepository { } 위같이 흔히 볼 수 있는 JpaRepository + CustomRepository 조합에서 데이터베이스는 하나지만 왠지 모르게 저 인터페이스를 CQRS로 분류하고 싶은 순간이 다들 한 번쯤 올 것이다.(아님 말고) CQRS의 Command를 담당할 Repository의 이름을 MemberCommandRepository로 Query를 담당할 Repository의 이름을 MemberQueryRepository라고 한다면 어떻게 구성할수있을까? @Repository public interface MemberQueryRepository ex.. [보이지 않는 동료] 목적을 통일시키고 인정을 기다리며 원본이 있는 글이며 좋은 한글 번역 게시글이있습니다. 조금 더 쉽고 편하게 읽을 수 있도록 수정하였으며 원문의 내용을 해치지 않도록 하였습니다. 스티브 마퀴스는 텔레비전도 없고 휴대전화 신호도 없는 워싱턴 주변의 작은 나무집에 은둔하고 있다. 그는 15년 동안 전 세계의 수십 명의 프로그래머와 함께 인간의 개인 정보를 보호하기 위한 큰 프로젝트를 비밀리에 개발하고 있다. 그러나 그들은 서로를 거의 본 적이 없으며 각각 마치 유령처럼 존재한다. 그러던 중 어느 날, 중국 기업이 갑자기 "대량의 기부금"을 보내기 전까지는.. 스티브 마퀴스 스티브 마퀴스는 워싱턴 주변의 작은 나무집에 은둔하고 있다. 서비스 제공업체는 매년 그의 집 앞에 신호 탑을 세울 것을 약속했지만 한 번도 이행한 적이 없고 나무집 주변은.. QueryDSL-JPA에서 인라인뷰를 써야 한다면 도망치자 Query DSL JPA을 사용도중 select, where에 Sub Query는 자주 사용하였지만 from 절에 Sub Query를 작성하려다가 문제를 만나게 되었다. QueryDSL로 from절 SubQuery, 즉 inline view를 작성하려 하니 지원하지 않는다는 말을 듣게 되었고 이게 Query DSL 이 제공 안 하는 건지, 하이버네이트가 지원 안 하는 건지 알아보니 예전 하이버네이트 이슈 중 inline view 관련 이슈를 확인해 볼 수 있었다. But! Hibernate 6.1 버전에서부터는 지원을 시작하였다. 그렇지만.. 사용 중인 프로젝트의 Hibernate 버전은 5 버전이었다. 즉 이 프로젝트에서는 Hibernate로 인라인뷰를 사용할 수 없었고 즉 이 문제를 해결할 수는 없었.. Swagger fox + Spring Boot Actuator = boom! 평화로운 따스한 오후 // swagger fox implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation("io.swagger:swagger-annotations:1.5.21") implementation("io.swagger:swagger-models:1.5.21") //Spring Boot Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' runtimeOnly 'io.micrometer:micrometer-registry-prometheus' 개발 중인 프로젝트에 메트릭 정보를 prometheus로 얻고 싶은 마음에 Swagger-fo.. 양말의 짝을 찾을수있는 효율적인 알고리즘 stackoverflow에서 재미난 주제를 발견하였다. 주제에 대한 요약은 아래와 같다. 세탁물에서 양말의 짝을 찾는 도중 내가 하는 방식이 그다지 효율적이지 않다는 걸 알게 되었다. 나는 양말을 하나를 고르고 그 짝을 찾기 위해 세탁물 더미에서 반복적으로 찾았다. 이는 평균적으로 n/2 * m/4 = n^2/8의 양말을 반복해야 한다. 나는 컴퓨터 과학자로서 O(N log N)에 달성하기 위해 정렬을 떠올렸다 양말을 복제할 수 없기 때문에 해싱이나 not in-place 정렬 같은 해결책은 사용할 수 없다 따라서 질문은 2n 개의 요소를 포함하는 n개의 양말 더미를 고려할 때(각 양말이 정확히 하나의 일치하는 쌍을 가지고 있다고 가정) 최대 로그 여분의 공간으로 효율적으로 짝을 찾는 가장 좋은 방법은 .. Java 의 Generic Type Erasure Type Erasure 타입 소거, 타입 삭제 등 다양하게 불리는 Type Erasure는 제네릭의 원소 타입을 컴파일 타입에서만 검사하고 런타임에서는 해당 타입 정보를 교체하는 것을 의미한다. 교체를 아무렇게나 하는 게 아니라 unbiunded type 은 object로 즉 , 와 같은 형태는 object로 교체하고 bounded type 은 bound type로 즉 는 String로 교체한다. unbiunded type의 Type Erasure public class CommonClass { public static String method(String str) { return str; } } @Test public void commonClassTest() throws NoSuchMethodExcep.. 이전 1 2 3 4 5 ··· 9 다음