반응형

2020/11 42

Spring Data JPA, Querydsl 로깅처리. p6spy 원하는 로그만 출력하기

바로 여기로 오셨다면 이전 글을 참조해주세요. 왜 p6spy를 선택했는지와 분석하는 이유에 대해서 정리해놓았습니다. jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 1탄! jpa, querydsl을 사용했을 때 불편한 점과 해결 방법(로깅) 및 로깅의 종류에 간략하게 알아보았습니다. jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 2탄! p6spy 적용방법을 알아보았습니다. Spring Data JPA, Querydsl 로깅처리. p6spy pretty하게 설정하기 p6spy 로깅 출력을 pretty 적용 이번 글에서는 p6spy를 사용하는데에 편리한 설정들이 뭐가 있는지 알아보는 과..

Develop/spring-data 2020.11.16

실전 자바 소프트웨어 개발 정리 - 2

모든 소스는 github에 올려두었습니다. 입출금 내역 분석기 확장판 목표 코드베이스에 유연성을 추가하고 유지보수성을 개선하는 데 도움을 주는 개방/패쇄 원칙(open/closed principle (OCP)) 을 배운다. 언제 인터페이스를 사용해야 좋을지를 설명하는 일반적인 가이드라인과 높은 결합도를 피할 수 있는 기법도 배운다. 자바에서 언제 API에 예외를 포함하거나 포함하지 않을지를 결정하는 자바의 예외 처리 방법을 배운다. 메이븐, 그레이들 같은 검증된 빌드 도구를 이용해 자바 프로젝트를 시스템적으로 빌드하는 방법도 배운다. 개방/패쇄 원칙 특정 금액 이상의 모든 입출금 내역을 검색하는 메서드를 구현해보자. 간단한 findTransactions() 메서드를 포함하는 BankTransactionF..

Study/java 2020.11.15

실전 자바 소프트웨어 개발 정리 - 1

책을 읽으며 소스는 github에 올려두었습니다. 이 글에서는 프로젝트( 입출금 내역 분석기 )를 만들면서 SRP에 대해서 알아보겠습니다. KISS 원칙 keep it short and simple 응용프로그램 코드를 한 개의 클래스로 구현한다. 코드 유지보수성과 안티 패턴 코드 유지보수성을 높이기 위해 노력해야한다. 특정 기능을 담당하는 코드를 쉽게 찾을 수 있어야 한다. 코드가 어떤 일을 수행하는지 쉽게 이해할 수 있어야 한다. 새로운 기능을 쉽게 추가하거나 기존 기능을 쉽게 제거할 수 있어야 한다. 캡슐화(encapsulation)가 잘 되어 있어야 한다. 즉 코드 사용자에게는 세부 구현 내용이 감춰져 있으므로 사용자가 쉽게 코드를 이해하고, 기능을 바꿀 수 있어야한다. 새로운 요구 사항이 생길 때..

Study/java 2020.11.14

실전 자바 소프트웨어 개발

www.yes24.com/Product/Goods/90533758 실전 자바 소프트웨어 개발 실전 프로젝트로 배우는 최신 자바 개발 기법 레벨업 가이드 이제 막 경력을 쌓기 시작한 자바 개발자가 최신 소프트웨어 개발 방법까지 알기란 벅찬 일이다. 테스트 주도 개발 같은 객체지향 www.yes24.com 실전 프로젝트에 쓰이고 있는 자바 다루는 방법에 대해 기술한 책입니다. 읽어보고 정리해보겠습니다!

Study/java 2020.11.13

Spring Data JPA, Querydsl 로깅처리. p6spy pretty하게 설정하기

바로 여기로 오셨다면 이전 글을 참조해주세요. 왜 p6spy를 선택했는지와 분석하는 이유에 대해서 정리해놓았습니다. jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 1탄! jpa, querydsl을 사용했을 때 불편한 점과 해결 방법(로깅) 및 로깅의 종류에 간략하게 알아보았습니다. jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 2탄! p6spy 적용방법을 알아보았습니다. 이번 글에서는 p6spy를 사용하는데에 편리한 설정들이 뭐가 있는지 알아보는 과정과 적용하는 것까지 정리하겠습니다. 작성된 글의 소스 코드는 github에 올려두었습니다. JPA, Querydsl 설정 방법은 아래..

Develop/spring-data 2020.11.13

jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 2탄!

이전 글 ( jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 1탄! ) 에서 jpa, querydsl을 사용했을 때 불편한 점과 해결 방법(로깅) 및 로깅의 종류에 간략하게 알아보았습니다. 이번 글에서는 최종적으로 선택된 로깅 방법인 p6spy에 대해서 정리하겠습니다. 작성된 글의 소스 코드는 github에 올려두었습니다. JPA, Querydsl 설정 방법은 아래 링크를 참조해주시면 됩니다! JPA에 대해서 궁금하시면? JPA란? JPA 시작 그리고 예제 JPA 테스트 코드로 알아보자! Querydsl에 대해서 궁금하시면? Querydsl란? Querydsl 사용해보자. ( 설정편 ) Querydsl plugin 실행방법 Querydsl 사용..

Develop/spring-data 2020.11.12

Querydsl 사용시 Mysql에서 생성한 Function 호출하는 방법

Querydsl 사용할 때 Mysql에서 생성한 Function을 호출해야할 경우가 있습니다. 어떻게 호출해야하는지 정리하겠습니다. 모든 소스는 github에 있습니다. 저 같은 경우는 기존 프로젝트를 MyBatis로 진행하여 Mapper.xml 에 쿼리를 작성하였습니다. 그리고 이제는 Spring Data JPA와 Querydsl 을 사용하기로 결정되었습니다. 그래서 과거에 Mysql function을 사용하던 것들을 자바 코드에서 해결을 해야했습니다. 처음엔 mysql function의 기능을 자바 코드로 옮길 생각이었으나, 그러면 관리포인트가 2개로 늘어나기때문에 querydsl에서 function 호출하는 방법이 필요했습니다. 그래서 정리하게 되었습니다. MySQL Function 만들기 crea..

Develop/spring-data 2020.11.11

[intellij] module not specified

한참 잘하고 있던 프로젝트의 명과 workspace 폴더명을 바꾸고 나서부터 실행이 안되는 현상입니다. 에러는 Module not specified 이었습니다. 여기서 아래의 그림을 보시면 Module을 찾을 수 없다는 문구를 볼 수 있습니다. no module로 표기된 셀렉트 박스를 클릭하여 선택하면 정상적으로 실행됩니다. workspace 폴더명을 바꾸면서 module 경로를 잃어버려서 생긴 문제였습니다!

TroubleShooting 2020.11.10

jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 1탄!

jpa, querydsl가 type-safe로 장점이 뚜렸하였지만 단점도 존재하였습니다. 이 글에선 다양한 쿼리 로그 방법에 대해서 알아보겠습니다. 각 로그방식의 설명과 불편한 점을 다루도록 하겠습니다. 작성된 글의 소스 코드는 github에 올려두었습니다. JPA, Querydsl 설정 방법은 아래 링크를 참조해주시면 됩니다! JPA에 대해서 궁금하시면? JPA란? JPA 시작 그리고 예제 JPA 테스트 코드로 알아보자! Querydsl에 대해서 궁금하시면? Querydsl란? Querydsl 사용해보자. ( 설정편 ) Querydsl plugin 실행방법 Querydsl 사용해보자. ( Entity 관계 매핑 편, 테스트 코드 포함 ) Querydsl 사용해보자. ( Entity 관계 매핑 X편, 테..

Develop/spring-data 2020.11.10

java jar 배포 시 파일을 찾을 수 없습니다. [해결방법]

Spring boot는 내장 톰캣이 있기 때문에 jar배포를 하면 내부적으로 톰캣을 띄울 수 있습니다. 그런데 배포하자마자 resource에서 excel file 읽어올 때 에러가 났습니다. fileNotfound!!! 문제되는 소스는 아래와 같습니다. File file = ResourceUtils.getFile("classpath:" + filePath); Local에서는 정상작동하는데 왜 안되는가 하고 여러가지 시도를 했습니다. URL은 잘 가져오나? URL url = ResourceUtils.getURL("classpath:"+filePath); 결과는 url=jar:file:/home/yongtae/server/test-project-0.0.1-SNAPSHOT.jar!/BOOT-INF/classe..

TroubleShooting 2020.11.09

Spring batch에 Spring Data JPA 기반 Querydsl을 적용해보자! (QuerydlsPagingItemReader)

이번 글에서는 Spring batch에 QuerydslPagingItemReader를 생성하여 적용시켜 테스트까지 해보는 과정을 정리하겠습니다. 우아한 형제들의 이동욱님의 세미나와 티스토리를 엄청나게 참조해서 만들었습니다. 모든 소스는 github에 있습니다. SpringBatch에 대해서 궁금하시면? Spring Batch 란? Spring batch 스케줄 생성! [Jenkins] Spring Batch Jenkins Schedule 사용 시 서비스 관리 방법 JPA에 대해서 궁금하시면? JPA란? JPA 시작 그리고 예제 JPA 테스트 코드로 알아보자! Querydsl에 대해서 궁금하시면? Querydsl란? Querydsl 사용해보자. ( 설정편 ) Querydsl plugin 실행방법 Query..

Spring Data JPA 기반 Querydsl 사용해보자. ( Entity 관계 매핑 X편, 테스트 코드 포함 )

이전글 Querydsl 사용해보자. ( 설정편 )에서 설정하는 방법을 알아보았습니다. Entity 관계 매핑되있는 경우는Querydsl 사용해보자. ( Entity 관계 매핑 편, 테스트 코드 포함 )참조해주세요. 이번 글에서는 Querydsl의 버전업으로 Entity 관계 매핑되어있지 않아도 사용가능해졌기 때문에 Querydsl 사용편에 대해서 알아봅시다. 모든 소스는 github에 올려두었습니다. Entity package com.example.querydsl.staff.entity; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.pers..

Develop/spring-data 2020.11.08

Spring Data JPA 기반 Querydsl 사용해보자. ( Entity 관계 매핑 편, 테스트 코드 포함 )

이전 글에서 Querydsl 설정하는 방법에 대해서 알아보았습니다. 이 글은 Entity 관계 매핑이 되어 있는 경우 Querydsl 사용법에 대해서 알아보겠습니다. 모든 소스는 github에 올려두었습니다.  Entity package com.example.queyrdsl.entity; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Getter @Entity @NoArgsConstructor(access = AccessL..

Develop/spring-data 2020.11.08

Spring Data JPA 기반 Querydsl 사용해보자. ( 설정편 )

지난글 JPA 프로젝트에 이어서 Querydsl까지 진행해보자! 이 글에서 작성된 모든 소스는 github에 올려두었습니다. Querydsl 세팅은 허들이 있다고 생각한다. 최대한 자세히 정리해보도록 노력할 것입니다. Gradle ( version 6.6 ) querydsl은 gradle 버전에 따라서 세팅하는 값이 다릅니다. 이 글에서는 version 5.0 이상일 기준으로 작성하겠습니다. plugins { id 'org.springframework.boot' version '2.3.5.RELEASE' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' id 'com.ewerk.gradle.plugins.querydsl' ve..

Develop/spring-data 2020.11.07
728x90
반응형