inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

29강. Section 4 정리. 다음으로!

JPA에 관련해서 현업 관련 질문이 있습니다.

해결된 질문

397

wisehero

작성한 질문수 33

2

간혹 유튜브 영상이나 ORM과 관련된 담론이 있는 글들을 보면 JPA의 속도 문제를 문제점으로 삼는 분들을 보았습니다. 그리고 JPA로는 한계가 오는 점들은 네이티브 쿼리를 사용해서 해결을 할 수 있다는 점, 그리고 태현님께서도 특정 상황에서는 JdbcTemplate을 사용해서 문제를 해결할 수 있다는 점을 강의에서 말씀 해주셨는데요.

 

하지만 그 '특정 상황'의 예시가 잘 떠오르지가 않는데 어떤 것이 있을까요? 배민의 영상에서도 동욱님은 JPA와 QueryDSL을 사용해서 몇 억건의 데이터도 잘 처리하셨고, 영한님께서도 책을 개정판을 내지 않는 이유로 이미 많이 성숙한 기술이라서 극적인 변화가 없는 기술이라고 하셨으며 어떤 유튜버분도 말씀하시길 'JPA라는 기술이 문제 자체를 일으킨다기 보단 개발자가 JPA에 대한 이해가 부족해서 문제가 발생한다.' 라고 하셔서 더 미궁속으로 빠집니다.

 

혹시 태현님께서도 이런 상황을 겪으신 적이 있으신지, 있다면 어떻게 해결하셨는지 궁금합니다!

java spring aws mysql spring-boot jpa

답변 1

2

최태현

안녕하세요! wisehero님! 이번에도 좋은 질문 주셔서 감사합니다! 😊

 

결론부터 말씀드리면 JPA 대신 완전히 다른 기술을 사용해야 하는 제가 경험해본 "특정 상황"JdbcTemplate 의 batchUpdate를 소개해드렸던 <추가 - MyBatis 적용과 DB 접근 기술 비교 (feat. 대용량 저장)> 강의에서 확인해보실 수 있습니다.

많은 양의 데이터를 빠른 시간 안에 저장하려면 JPA 대신 JdbcTemplate 을 사용해야 한다는 영상입니다!!

 

이 외에 추가적으로 JPA를 사용해서 성능이 문제가 될만한 상황은

  • 수억건, 수십억건 (RDS + 샤딩 + 튜닝) 레벨을 넘어가는 더더더 많은 데이터의 저장

  • 과도한 혹은 이해가 부족한 연관관계 설정으로 인한 fetch 문제 (대표적으로는 1 + N 문제가 있죠)

정도가 떠오르네요! 🙂

 

전자의 경우는 사실 RDS의 근본적인 한계이기 때문에 보통은 NoSQL 쪽으로 넘어가는 방식을 띄고요!

후자의 경우는 연관관계에 대한 이해도를 높이고 적절한 해결 방향을 찾거나, 연관관계를 사용하지 않고 JPA의 장점을 취하는 방식으로 나아가게 됩니다.

 

결론적으로 제 경험상 JPA를 사용하면서 "속도 문제"로 근본적인 어려움을 겪은 적은 없었습니다. 위에서 말씀드렸다시피 속도 문제가 발생하는 원인에 따라 적절한 기술을 활용해 문제를 해결할 수 있기 때문이죠!

물론 속도 이슈로 JPA 대신 다른 기술을 사용했다는 것 자체가 JPA가 "속도 문제"가 있는 것이 아니냐? 라고 할 수 있고, 그 의견도 충분히 일리가 있다고 생각합니다.

 

단지 "JPA에 "속도 문제"가 있으니 (혹은 없으니) 그 기술은 안좋아! / 좋아!" 보다는

위에서 말씀드린 batch insert / 더더더 많은 데이터 / 연관관계 이슈 정도는 JPA가 갖는 단점(?) 특징(?) 으로 이해하고 그때 그때 적절한 기술을 사용하면 되지 않나 싶습니다. 😊

 

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

패키지 구분에 대해 궁금한게 있습니다

0

25

2

리액트 관련 질문이 있습니다.

0

65

2

스프링부트 버전

0

76

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

59

2

33강. UserLoanHistory의 관계성에 대한 질문

1

56

2

Java JDK 버전 문의의 건

0

135

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

90

3

h2 console 접속했을 테이블 질문

1

67

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

79

2

15강. updateUser() 질문

0

56

2

깃허브 질

0

84

2

여기까지 다 끝냈다고 하셨는데

0

79

2

왜안될까요

0

72

2

MySQL 창이안ㄴ뜹니다

0

59

2

포스트맨

0

52

1

spring 개념적인 질문

0

72

2

인텔리제이 샘플코드 실행 안됨 오류

0

142

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

86

1

마이그레이션 오류입니다.

0

175

3

Whitelabel Error Page 오류가 났습니다.

0

166

2

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

94

3

궁금한게 있습니다.

0

60

2

DTO 관련

0

70

2

궁금한게 있습니다!

0

69

2