인프런 커뮤니티 질문&답변
JPA Repository 질문이 있습니다!
해결된 질문
작성
·
27
1
안녕하세요!
기존 PostRepository를 사용하다가 JPA 도입으로 JpaPostRepository가 새로 생겼는데, JpaPostRepository 클래스에 재구현을 하기 위해 default 메서드를 추가했는데 그 방법이 아닌 PostRepositoryImpl 와 같은 구현체를 만들어서 구현해도 무방할까요? 실무에서는 어떤 방식이 더 자주 사용 되는지 궁금합니다.
퀴즈
데이터 저장 방식인 메모리와 디스크의 가장 큰 차이점은 무엇일까요?
접근 속도
데이터 지속성 (영구성)
저장 용량 제한
구현 복잡성
답변 2
1
안녕하세요 Aurora 님
JpaPostRepository 에 findAllPaged 메소드만 재정의한 이유는, PostRepository 에 있는 save, findAll, findById, deleteById 는 JpaRepository 의 기본 구현체가 이 메소드를 지원하는 반면, findAllPaged 는 그렇지 않기 때문에 재정의했습니다.
즉, PostRepository 라는 인터페이스를 그대로 사용하고 싶은데, JpaRepository 의 기능 추가하여 사용하고 싶어서 JpaPostRepository 라는 중간 인터페이스를 사용한 형태입니다.
PostRepositoryImpl 같은 구현체를 직접 만들어서 사용하셔도 됩니다. 다만 강의의도는 위에서 말씀드린 것처럼 Spring Data Jpa 가 지원하는 JpaRepository 인터페이스를 사용하기 위함이 크다고 생각해주시면 됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Aurora님께서 JPA와 관련된 궁금증을 가지고 계시네요. JPA를 도입하면서 Repository를 구현하는 방법은 여러 가지가 있습니다. 질문하신 대로 두 가지 접근 방법에 대해 설명드릴게요.
Default 메서드를 사용한 JpaPostRepository: JpaPostRepository 인터페이스에
default메서드를 정의하여 인터페이스 자체에서 기본 구현을 제공할 수 있습니다. 이 방법은 인터페이스의 기능 확장이 비교적 간단하게 이루어질 수 있고, 인터페이스의 일관성을 유지할 수 있다는 장점이 있습니다.PostRepositoryImpl과 같은 구현체를 사용하는 방법: 기존의 Repository 인터페이스를 확장하거나 직접 구현체 클래스를 작성하여 필요한 메서드를 추가하는 방식입니다. 이 방법은 복잡한 비즈니스 로직이나 여러 인터페이스를 구현해야 할 때 유리합니다. 실무에서는 커스터마이징이 많거나 복잡한 쿼리 로직이 필요한 경우 구현체 클래스를 사용하여 클래스를 명확하게 분리하고 관리하는 경우가 많습니다.
실무에서는 프로젝트의 요구사항과 팀의 스타일에 따라 달라질 수 있지만, 복잡한 로직을 가지고 있거나 여러 개발자가 함께 작업할 때는 구체적인 구현체 클래스를 작성하는 것이 더 선호됩니다. 이는 유지보수성과 코드의 명료성을 높이기 때문입니다.
위 내용을 바탕으로 만약 관련된 추가 설명이나 예시가 필요하신 경우 기존 게시글을 참고하시면 큰 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




