inflearn logo
강의

Course

Instructor

Learning Large-Scale System Design by Building Directly with Spring Boot - Bulletin Board

Post List API - Page Number Implementation

JPA와 네이티브 쿼리

2

pumpingYoo

3 asked

0

안녕하세요 강의 잘 듣고 있습니다.

취준생이라 실무 경험이 없어 좀 붕뜬 질문 인점 양해 부탁드립니다.


우선 쿼리를 통해 최적화 해야된다면 JPA에서 자동으로 만들어주는 쿼리는 최적화가 안되어있기에 이런식으로 네이티브 쿼리를 날리는거 자체는 이해했습니다.


하지만 결국 이렇게 JPA 안에서 네이티브 쿼리를 날리면 단순 mybatis 쓰는거랑 뭐가 다른가 하는 의문이 들더라구요.


이럴때는 이런 최적화 부분 말고 이외의 부분은 충분히 JPA에서 만들어주는 기본 쿼리로 가능하기때문에 부분적으로만 최적화된 네이티브 쿼리를 직접 날림으로서 보일러플레이트를 대신할 수 있다 뭐 이런식으로 이해하면 될까요?

java mysql spring-boot kafka redis

Answer 1

0

communityai8509

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

질문하신 것처럼 JPA에서 네이티브 쿼리를 사용하면 SQL 작성 방식 자체는 MyBatis와 비슷해질 수 있습니다. 다만 JPA를 사용하면 엔티티 매핑, 파라미터 바인딩, 결과 객체 변환 등 일부 반복 작업을 줄일 수 있다는 차이가 있습니다.

강사님께서는 강의에서 JPA의 추상화된 페이징 쿼리보다 실제 데이터베이스에서 실행되는 SQL과 인덱스 동작을 명확히 보여주기 위해 네이티브 쿼리를 사용하셨다고 설명하셨습니다. 따라서 다음과 같이 이해하시면 좋습니다.

  • 단순 CRUD나 매핑이 편리한 기능은 JPA를 활용할 수 있습니다.
  • 인덱스, 커버링 인덱스, 서브쿼리 등 성능 최적화가 중요한 조회는 네이티브 쿼리로 직접 작성할 수 있습니다.
  • 네이티브 쿼리를 사용하더라도 JPA의 엔티티 매핑과 객체 변환 기능을 일부 활용할 수 있습니다.
  • 반대로 복잡한 SQL을 대부분 직접 작성한다면 MyBatis나 Spring Data JDBC가 더 단순하고 적합할 수도 있습니다.
  • 결국 JPA, MyBatis, JDBC 중 무엇이 절대적으로 우월하다기보다 팀의 선호도, 쿼리 복잡도, 유지보수 방식에 따라 선택하는 문제입니다.

관련하여 강사님께서 JPA를 단순 CRUD나 매퍼처럼 활용하는 경우와 MyBatis·Spring Data JDBC를 사용하는 이유를 설명한 답변을 참고해 보세요.

안녕하세요. 실무에서 JPA 사용법

JPA의 연관관계, 네이티브 쿼리, QueryDSL을 실무에서 어떻게 바라보는지 자세히 설명되어 있습니다.

개인적인 궁금증입니다

실무에서 JPA 대신 MyBatis나 Spring Data JDBC를 사용하는 경우와 그 이유에 대한 답변입니다.

무한 스크롤 질문있습니다

JPA의 자동 생성 페이징 쿼리 대신 네이티브 쿼리를 사용한 이유와, 데이터베이스 관점에서 쿼리를 이해해야 하는 이유가 설명되어 있습니다.

query DSL 대신 Native Query를 사용하시는 이유가 있으신가요?

Native Query와 QueryDSL의 장단점 및 실무에서 기술을 선택하는 기준을 확인하실 수 있습니다.

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

ArticleReadService 관련 질문

0

53

1

조건 검색 질문

0

62

1

댓글 삭제 로직에서 동시성 문제 발생 가능성

0

68

1

무한 depth 구현 중 CommentPath 관련 질문

0

65

1

테스트 코드 작성 시 DTO 새로 작성하는 이유가 궁금합니다.

0

82

1

Kafka Cluster 구성도 질문

0

66

1

@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.

0

109

1

consumer에서 에러가 발생할 경우 데이터 유실 문의

0

117

2

게시글 테스트 데이터 삽입

0

102

2

정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?

0

176

2

좋아요 기능 정합성 보장 방법

0

152

2

좋아요 동시성처리 최적의 선택?

1

213

2

프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해

0

144

2

안녕하세요 무한스크롤 강의듣다가 질문이 있습니다.

0

103

1

조회수 조회 로직 질문

1

124

2

비로그인 유저도 어뷰징 방지 정책

1

137

2

CommentServiceTest의 테스트 로직 질문

0

92

2

무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문

1

118

2

path 쿼리 관련 질문드립니다!

0

108

2

antigravity 에디터를 쓰신다면 종료해주세요

1

154

0

프로젝트 구조

0

130

2

article_like_count api test

0

120

2

이벤트 페이로드 객체의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다!.

0

145

2

[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제

0

140

2