취업 준비/실전 JPA
4/9 취준 기록 (JPA)
가끔개발
2023. 4. 9. 16:47
JPA 공부를 위해 김영한 선생님을 사서 공부하게 되었으며, 강의만으로는 부족한것같아 책을 사서 공부중이다.
SQL를 직접 다룰때 발생하는 문제점
- 객체를 데이터베이스에 CRUD하려면 너무 많은 SQL과 JDBC API를 코드로 작성해야 한다.
- SQL에 의존적인 개발이 된다.
- 데이터 접근 계층을 사용하여 SQL을 숨겨도 어쩔 수 없이 DAO를 열어서 어떤 SQL이 실행되는지 확인해야 하는 점이다.
- DAO을 열어서 어떤 SQL이 실행되고 어쩐 객체들이 함께 조회되는지 일일 이 확인해야 한다.
- SQL을 직접 다루면 처음 실행하는 SQL에 따라 객체 그래프를 어디까지 탐색할 수있을지 정해진다. - 비지니스 로직에 따라 사용하는 객체 그래프가 다른데 언제 끊어질지 모를 객체를 그래프를 함부로 탐색할 수없기 때문
요약
- 진정한 의미의 계층 분할이 어렵다.
- 엔티티를 신뢰할 수없다.
- SQL에 의존적이 개발을 피하기 어렵다.
JPA란?
Java Persistence API는 자바 진영의 ORM 기술 표준이다.
JPA의 특징
- 쿼리를 일일히 작성할 필요가 없어 코드 작업량이 줄어든다.
- 가독성이 뛰어나다.
- 수정이 간편해 유지보수, 리팩토링에 용이하다.
JPA의 한계점
- 매핑 설계를 잘못했을 때 성능 저하가 발생할 수 있다.
- 동적 쿼리를 사용하면 가독성이 떨어져 유지보수 시 어려움이 있다.
ORM이란?
객체와 관계형 데이터베이스를 매핑한다는 뜻
객체와 테이블을 매핑하여 패러다임의 불일치 문제를 개발자 대신 해결해준다.
ex) INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM프레임워크에 저장하면된다.
JPA를 왜 사용하는가
- 생산성 -
- 반복적인 INSERT SQL을 작성하고 JDBC API를 사용하는 반복적인 일들 대신해줌
- 유지 보수
- 엔티티에 필드 하나만 추가해도 관렫된 등록, 수정 조회 SQL과 결과를 매핑하는 JDBC API를 변경해야지만 이러한 과정을 JPA가 대신 처리 수정할 코드가 줄어듬
- 패러다임의 불일치 해결
- 상속, 연관관계, 객체 그래프 탐색, 비교하기 와 같은 페러다임 불일치 문제 해결
- 성능
- 데이터 접근 추상화와 벤더 독립성
- 표준
1차 캐시와 동일성 보장
https://tundra-pleasure-dcf.notion.site/JPA-98cfc379de6f4075a2604cb40be73a2e
JPA
SQL를 직접 다룰때 발생하는 문제점
tundra-pleasure-dcf.notion.site