inflearn logo
강의

講義

知識共有

本当!コトリンとスプリングブートで図書館アプリケーションを開発する(Javaプロジェクトリファクタリング)

Custom 레프직토리 형식

56

KMC

投稿した質問数 42

0

안녕하세요 강사님

취준생으로써 강의 들으면서 궁금한 점 질문 드립니다.

1.CustomRepository형식 과 Impl 형식이 보통 어떨때 자주 쓰이는 지 궁금해서 질문 드립니다.

2.JPA 에서 작성한 것들을 Querydsl 로 바꿀때가 그럼 ByXxx 에서 조인조건이 두개이상 들어가면 무조건 Querydsl 자바코드로 바꾸어 주는 게 좋을까요?

java spring kotlin spring-boot 리팩터링

回答 2

0

lannstark

안녕하세요! KMC님~ 🙂 좋은 질문 감사드립니다.

하나씩 답변 드려 보면! 저는 사실 Impl 형식을 완전히 사용하지 않습니다. 몇 년 전에 Querydsl을 사용할 때 쓰던 방식이라고만 알고 있고, JPAQueryFactory를 직접 주입 받아 처리 하는 방식이 훨씬 편해서 그 방식을 선호하고 있어요! 굳이 따지면 Impl 형식을 쓸 경우 하나의 Repository 에서 SimpleJpaRepository 의 기본 기능 (ex. save) 을 한 번에 쓸 수 있다는 잠점이 있겠네요

 

또한 저는 조회 기능은 join 과 무관하게 무조건 Querydsl로 작성하는 편입니다. 단순한 Spring Data JPA 의 몇 가지 아쉬운 점에서도 소개드렸던 것처럼 조회 기능은 Querydsl 구현이 훨씬 편하다고 생각해서요! 요즘은 AI 도구가 많이 발전해 Spring Data JPA의 선언식 함수 findByXX 의 '간단하다는' 장점도 많이 줄어든 것 같습니다.

 

제가 말씀드린 내용이 정답은 아니고, 개인적은 의견을 공유드린 정도입니다!

답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇

0

KMC

감사합니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

KMC님이 질문하신 Custom 레포지토리 형식과 Querydsl 사용에 대한 내용을 간단히 정리해보겠습니다.

  1. CustomRepository 형식과 Impl 형식

CustomRepository와 그 구현체인 Impl 형식은 스프링 데이터 JPA에서 제공하는 기본 CRUD 메서드 외에, 개발자가 정의한 복잡한 쿼리나 메서드를 추가하기 위해 사용됩니다. 예를 들어, 특정 롤이나 조건에 따라 복잡한 조회가 필요할 때, 이 패턴을 사용하여 Repository에 맞춤형 동작을 추가할 수 있습니다.

CustomRepository는 인터페이스를 통해 정의하고, Impl 형식은 해당 인터페이스를 구현하여 실제 로직을 담습니다. 이를 통해 인터페이스 분리 규칙을 따르고, 확장성과 유지보수성을 높일 수 있습니다.

  1. Querydsl로 전환

JPA에서 FindByXxx와 같은 쿼리 메서드는 간단한 CRUD 운영에 유리하지만, 조인 조건이 여러 개일 경우에는 쿼리가 복잡해지고 가독성이 떨어질 수 있습니다. 이럴 때 Querydsl을 사용하면 동적 쿼리를 형식 안전하게 작성할 수 있어 유지보수에 유리합니다. Querydsl을 통해 복잡한 조건이 필요한 경우, 코드로 구현하여 타이핑 오류를 컴파일 시점에 방지하는 것이 좋습니다.

더 상세한 답변과 외부 리소스를 통해 학습을 원하신다면, 비슷한 질문이 이미 여러 번 다뤄진 바 있어 아래의 링크들을 참고하시기 바랍니다:

이 자료들은 Querydsl의 사용 사례 및 CustomRepository에 대한 보다 깊은 이해를 도울 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?

0

67

2

실행이 안되네요

0

65

2

프론트 영역 보는법

0

51

2

companion object

0

75

2

Querydsl 도입

0

67

2

fetch join DISTINCT 중복제거

1

82

2

표준 예외와 커스텀 예외 사용 전략 질문

0

85

3

이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.

1

177

2

테스트를 위한 코드

1

105

2

프로젝트 실행 에러

0

150

2

PDF 문서에 오타가 있어서 알려드립니다.

1

102

1

enum질문

1

86

1

테스트 후 AfterEach 함수에서 나오는 쿼리

0

136

2

테스트 fixture

1

210

2

./gradlew test 실행시 인식할수 없다고 뜹니다.

0

140

1

test 코드 실행시 경고가 발생합니다.

0

140

1

13강 User Kotlin 변환중

2

169

3

'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문

2

174

1

-

0

141

2

4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?

0

310

3

junit import 불가

0

269

3

테스트 코드와 관련하여 질문이 있습니다.

1

216

1

hibernate가 select를 두번 하는 이유

0

237

1

intelliJ 최신버전과 kotlin 1.6버전 충돌. 빌드 오류

1

999

2