PSD( Private-Self-Development )

JPA 란? 본문

Backend/JPA

JPA 란?

chjysm 2022. 9. 28. 12:18

JPA 란?

JPA( Java Persistence API ) 은 자바 ORM을 위한 표준 기술

출저 : 구글검색

ORM 이란?

ORM( Object-Relational Mapping ) 은 자바의 객채와 관계형 DB를 맵핑해주는 것

 

왜 사용하는가?

유지보수성 증가

가장 큰 이유는 유지보수성의 증가라고 생각한다.

이러한 장점을 가져다주는 JPA의 특징은 아래와 같다.

 

  • SQL 문을 작성하지 않고, 객체지향적인 코드 작성에 집중할 수 있다.
  • 서비스 사용 DB가 변경될 경우, 쿼리 수정이 필요한데
    JPA를 사용할 경우, 불필요하다.
  • 가독성이 좋다.

 

하지만 단점 또한 존재하는데,

  • DB의 관계 혹은 구조가 복잡한 경우, 속도 저하 혹은 원하는 쿼리 결과를 얻기 힘들 수 있다.
  • 쿼리가 복잡하거나, 대용량 데이터를 취급하는 쿼리의 경우 별도의 튜닝 및 선회가 필요한데
    이러한 경우 어쩔 수 없이 SQL 문을 사용할 수 있다.
  • 즉, 서비스가 크고 복잡한 경우 부적합할 수 있다.

 

이러한 단점을  어느 정도 보완하기 위한 Querydsl 사용 또한 공부할 것이다!

Querydsl  란?
자바 기반으로 쿼리 작성하도록 해주는 API 

 

객체와 관계형 DB 간의 차이점이 발생하는 이유

객체의 상속과 DB 간의 상하 관계의 차이가 존재하기 때문이다.

이러한 차이점 때문에 엔티티 신뢰 문제, CRUD SQL 다 작성해야 함 발생

엔티티 신뢰 문제 란?
관계형 DB와 같이 객체를 선언하여도
DTO에서 연관된 DB 테이블을 모두 조회하지 않으므로 
조회한 객체에 다른 테이블에 대한 정보가 존재하지 않을 수 있음

 


무엇으로 공부할까?

https://www.inflearn.com/roadmaps/149

 

김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵 - 인프런 | 로드맵

[사진][사진] 현역 개발 팀장이 전해주는진짜 실무 노하우. 실무에서 스프링 부트와 JPA를 재대로 알고 사용하는 것은 매우 중요합니다. 조 단위의 거래 금액을 처리하는 주문, 결제, 정산 같은 핵

www.inflearn.com

 

김영한의 스프링 부트 + JPA 로드맵 인터넷 강의로 공부를 진행하려고 한다.

회사 동기의 추천으로 듣기 시작했는데 너무 좋다 ㅠㅠㅠ.

설명이 자세하고, 듣기 좋고, 이해가 쉽다. 
이분 강의를 즐겨 듣게 될 것 같다.

'Backend > JPA' 카테고리의 다른 글

JPA 의 프록시, 지연 로딩, 즉시 로딩  (0) 2022.10.12
JPA 의 상속  (0) 2022.10.11
JPA의 DB 매핑  (0) 2022.10.06
JPA의 영속성 컨텍스트  (0) 2022.10.06
JPA 사용 설정 및 사용  (0) 2022.10.05