inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trong thực tế! Phát triển ứng dụng quản lý thư viện với Kotlin và Spring Boot (tái cấu trúc dự án Java)

Custom 레프직토리 형식

57

KMC

42 câu hỏi đã được viết

0

안녕하세요 강사님

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

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

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

java spring kotlin spring-boot 리팩터링

Câu trả lời 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

68

2

실행이 안되네요

0

66

2

프론트 영역 보는법

0

51

2

companion object

0

78

2

Querydsl 도입

0

67

2

fetch join DISTINCT 중복제거

1

83

2

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

0

86

3

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

1

177

2

테스트를 위한 코드

1

105

2

프로젝트 실행 에러

0

151

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

312

3

junit import 불가

0

273

3

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

1

218

1

hibernate가 select를 두번 하는 이유

0

240

1

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

1

1002

2