본문 바로가기
반응형

Spring Data24

[Querydsl] 서브쿼리 사용하기 안녕하세요! 이번 시간에는 Querydsl에서의 Subquery 기본 가이드를 진행합니다. 개인적으로 ORM을 사용하며, 객체지향적으로 엔티티가 구성되어있으면 서브쿼리가 필요한 일은 거의 없다고 생각하는데요. 혹시나 필요한 분들이 계시면 도움이 되셨으면 합니다. 그럼 시작합니다! 모든 코드는 Github에 있으니 참고하세요 :) 1. select Sub Query 첫번째는 select절의 서브쿼리입니다. 도메인에 대한 설명보다는 Querydsl 코드가 좀 더 도움이 되실것 같아 코드로 바로 설명드리겠습니다. Spring Data Jpa에서 Querydsl 적용을 어떻게 하는지는 이전 포스팅을 참고해보세요 :) Querydsl의 코드는 아래와 같습니다. 여기서 주의깊게 봐야할 코드는 ExpressionUt.. 2019. 1. 18.
Spring Boot Data Jpa 프로젝트에 Querydsl 적용하기 안녕하세요? 이번 시간에는 Spring Boot Data Jpa 프로젝트에 Querydsl을 적용하는 방법을 소개 드리겠습니다. 모든 코드는 Github에 있습니다. Spring Data Jpa를 써보신 분들은 아시겠지만, 기본으로 제공해주는 @Query로는 다양한 조회 기능을 사용하기에 한계가 있습니다. 그래서 이 문제를 해결하기 위해 정적 타입을 지원하는 조회 프레임워크를 사용하는데요. Querydsl은 Jooq와 함게 가장 유명한 조회 프레임워크입니다. 이번 포스팅에서는 Spring Boot Data Jpa에서 Querydsl을 어떻게 설정하는지를 이야기합니다. Querydsl의 장점 혹은 왜 써야하는지 등의 내용은 담지 않습니다. 이건 나중에 한번 각잡고 작성해서 공유드리겠습니다 :) 개발환경은 .. 2018. 12. 31.
Querydsl 에서 OneToMany 관계에서 Left Outer Join 이 필요할 경우 안녕하세요? 이번 시간에는 JPA와 Querydsl을 사용하실때 OneToMany 관계에서 Left Join (Outer Join) 이 필요할 경우 어떻게 하면 될지에 대해서 소개 드리겠습니다. 모든 코드는 Github에 있으니 필요시 참고하시면 됩니다. Querydsl의 버전은 4.1.4 로 진행합니다. (2018.10.04 기준) 문제 상황 아래 코드와 같이 1:N 관계의 Entity들이 있다고 가정하겠습니다. Parent.java @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private.. 2018. 10. 5.
[Redis] SpringBoot Data Redis 로컬/통합 테스트 환경 구축하기 안녕하세요? 이번 시간엔 SpringBoot Data Redis 로컬 테스트 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 들어가며 회사 신규 프로젝트로 Redis 를 사용하게 되었습니다. 로컬에서 개발하고 테스트 할 수 있는 환경구성이 필요했는데요. H2처럼 Redis도 프로젝트에 의존하는 로컬 환경을 구성하게 되서 정리합니다. 개인적인 생각이지만, 저는 Github에서 프로젝트를 받은뒤 바로 실행이 될수있어야 한다고 생각합니다. 프로젝트를 실행시키려면 AWS (SQS) 계정이 있어야 한다거나, 특정 데몬(.. 2018. 5. 26.
JPA에서 대량의 데이터를 삭제할때 주의해야할 점 안녕하세요? 이번 시간엔 JPA에서 대량의 데이터를 삭제할때 주의해야할 점을 샘플예제로 소개드리려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 발단 업무중에 배치로 일괄 데이터 삭제 기능을 작업하였습니다. 테스트를 진행하는데 삭제 성능이 너무나 안나오는 것이였습니다. 단순 삭제에서 왜이렇게 성능이 안나오나 slow query를 확인해보는데 이상한 점을 발견하였습니다. 이를 샘플예제로 소개드리겠습니다. 예제 샘플 코드 작성을 위해 다음과 같은 의존성들을 사용할 예정입니다. Gradle을 사용할 예정이며, 테스트 프레임워크로 S.. 2017. 10. 16.
JPA N+1 문제 및 해결방안 안녕하세요? 이번 시간엔 JPA의 N+1 문제에 대해 이야기 해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 본문JPA를 사용하면 자주 만나게 되는 것이 N+1 문제입니다. 예를 들어, 아래와 같은 구조에서 Academy를 호출하여 그 안에 속한 Subject를 사용한다고 가정해보겠습니다.간단하게 이들의 관계를 코드로 표현하겠습니다. (lombok을 사용하였습니다.)@Entity @Getter @NoArgsConstructor public class Academy { @Id @GeneratedValue private Lo.. 2017. 7. 24.

728x90