inflearn logo
강의

Course

Instructor

Complete One Full Cycle of Backend Service with Spring Boot and AWS

Connecting to H2 Database In-Memory Storage

JPA Repository 질문이 있습니다!

Resolved

28

Aurora

19 asked

1

안녕하세요!

기존 PostRepository를 사용하다가 JPA 도입으로 JpaPostRepository가 새로 생겼는데, JpaPostRepository 클래스에 재구현을 하기 위해 default 메서드를 추가했는데 그 방법이 아닌 PostRepositoryImpl 와 같은 구현체를 만들어서 구현해도 무방할까요? 실무에서는 어떤 방식이 더 자주 사용 되는지 궁금합니다.

aws mysql docker spring-boot jpa

Answer 2

1

apiece

안녕하세요 Aurora 님

JpaPostRepositoryfindAllPaged 메소드만 재정의한 이유는, PostRepository 에 있는 save, findAll, findById, deleteById 는 JpaRepository 의 기본 구현체가 이 메소드를 지원하는 반면, findAllPaged 는 그렇지 않기 때문에 재정의했습니다.

즉, PostRepository 라는 인터페이스를 그대로 사용하고 싶은데, JpaRepository 의 기능 추가하여 사용하고 싶어서 JpaPostRepository 라는 중간 인터페이스를 사용한 형태입니다.

PostRepositoryImpl 같은 구현체를 직접 만들어서 사용하셔도 됩니다. 다만 강의의도는 위에서 말씀드린 것처럼 Spring Data Jpa 가 지원하는 JpaRepository 인터페이스를 사용하기 위함이 크다고 생각해주시면 됩니다.

감사합니다.

 

0

communityai8509

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

Aurora님께서 JPA와 관련된 궁금증을 가지고 계시네요. JPA를 도입하면서 Repository를 구현하는 방법은 여러 가지가 있습니다. 질문하신 대로 두 가지 접근 방법에 대해 설명드릴게요.

  1. Default 메서드를 사용한 JpaPostRepository: JpaPostRepository 인터페이스에 default 메서드를 정의하여 인터페이스 자체에서 기본 구현을 제공할 수 있습니다. 이 방법은 인터페이스의 기능 확장이 비교적 간단하게 이루어질 수 있고, 인터페이스의 일관성을 유지할 수 있다는 장점이 있습니다.

  2. PostRepositoryImpl과 같은 구현체를 사용하는 방법: 기존의 Repository 인터페이스를 확장하거나 직접 구현체 클래스를 작성하여 필요한 메서드를 추가하는 방식입니다. 이 방법은 복잡한 비즈니스 로직이나 여러 인터페이스를 구현해야 할 때 유리합니다. 실무에서는 커스터마이징이 많거나 복잡한 쿼리 로직이 필요한 경우 구현체 클래스를 사용하여 클래스를 명확하게 분리하고 관리하는 경우가 많습니다.

실무에서는 프로젝트의 요구사항과 팀의 스타일에 따라 달라질 수 있지만, 복잡한 로직을 가지고 있거나 여러 개발자가 함께 작업할 때는 구체적인 구현체 클래스를 작성하는 것이 더 선호됩니다. 이는 유지보수성과 코드의 명료성을 높이기 때문입니다.

위 내용을 바탕으로 만약 관련된 추가 설명이나 예시가 필요하신 경우 기존 게시글을 참고하시면 큰 도움이 될 것입니다.

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

맥북으로 RDP 연결 질문

0

13

1

라우팅 테이블 설정 중 궁금한게 있습니다.

0

26

1

프롬프트, 스킬, sub-agent

0

16

0

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

18

2

수강 연장 가능하면 요청 드립니다.

0

15

2

RepositoryTest의 패키지 위치가 domain인 이유

0

13

1

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

30

1

EC2 실습 중 docker-compose / docker ps 실행 시 권한 오류 문의

2

66

1

gradlew, java -jar 로 애플리케이션 실행시키기에서

1

42

1

application.yaml에서 enabled: true 인식 안됨

3

108

4

영상 안보임

0

81

4

중간 결과물을 다운 받을 수 있는 곳이 있나요?

1

73

2

여러 컨테이너 사용시 사용할 포트 번호는 무엇으로 하면 되나요?

1

59

1

URL 오타 방지

1

55

1

배포 후 Entity 수정 관련

1

75

1

EC2 HTTPS에 관련하여 질문 드립니다!

1

61

2

EC2 <-> RDS 연동 후 로컬에서의 Docker에 대해 궁금한 점이 있습니다.

1

69

1

Docker에 관하여 궁금한 점이 있습니다!

1

56

1

댓글 생성, 삭제 시 게시글의 댓글 수 증감 로직 질문

1

76

1

https 설정 질문

1

93

2

섹션 5-26. AWS EC2 서버 배포 파트 질문입니다.

1

95

2

강의내용 중 질문드립니다.

1

150

2

jakarta persistence 플러그인은 intellij ultimate에서만 사용가능하다고 나오네요.

1

131

2

다운받은 강의자료 압축풀기가 안되요

1

116

2