issues
search
woowacourse-study
/
talteco
"조조그린"의 면접 스터디
3
stars
0
forks
source link
JPA 를 사용한 이유가 무엇인가요?
#77
Open
jojogreen91
opened
2 years ago
jojogreen91
commented
2 years ago
우리는 객체를 관계형 DB 로 관리해야하는데 객체 지향과 관계형 DB 의 패러다임이 불일치하기 때문에 많은 문제가 발생한다.
연관관계, 객체 그래프 탐색의 문제
동일한 리소스를 불러와도 객체로는 동일성을 표현해내지 못한다.
SQL 중심 개발이 되는것은 반복작업이 많고 지루하다.
하나 개발할 때마다 CRUD 를 다 작성해서 만들어 줘야한다.
참조, 연관관계가 있는 객체를 하나 조회하기 위해서는 많은 양의 SQL 을 작성해야한다.
RDB 의 데이터를 불러와도 직접 객체로 다시 만들어줘야한다.
객체와 RDB 의 차이
상속, 연관관계, 데이터 타입, 데이터 식별 방법
객체를 자바 컬렉션에서 사용 하듯이 RDB에 저장하고 불러올 수 없을까? → JPA 등장
JPA → 자바 ORM(Object-relational mapping) 대표
JPA(ORM) 을 사용하면 객체지향과 RDM 의 패러다임 불일치를 해결할 수 있다.
JPA 는 표준 명세, 표준 인터페이스고 하이버네이트가 우리가 실제로 사용하는 구현체라고 할 수 있다.
JPA 를 사용하면 RDB 를 Java 컬렉션처럼 사용할 수 있다.
JPA 를 사용했을 때 설정한 DB 에 벤더에 맞게 해당 DB 의 방언도 알아서 맞춰서 쿼리를 전송한다.
JPQL 를 사용했을 때도 마찬가지이다.
왜 JPA 를 사용하는가?
SQL 중심 개발 → 객체 중심의 개발이 가능
생산성
유지보수
RDB 와 객체지향의 패러다임 불일치를 해결
JPA 성능 최적화 기능 사용가능
트랜젝션 내에서 캐싱
트랜젝션 내에서 쓰기 지연
지연 로딩, 즉시 로딩
tonic523
commented
2 years ago
jpql의 장점은?
객체 관점에서 sql문을 작성할 수 있다.
객체 그래프 탐색이 가능하다.
왜 jpa에서 native query를 지원할까요?
jpa에서도 완벽하게 쿼리문을 지원하지 않는다.
프로젝트에 jpa를 사용했는데, 사용하면서 불편했던 점은 없었나요?
학습 시간이 필요했다.
n+1 문제를 신경써주어야 한다.
어떻게 쿼리문을 날리는지 신경써주어야 한다.
복잡한 쿼리가 많다면?
native query를 사용하는게 좋지만, 개발할 때 보통 복잡한 쿼리보다 단순한 쿼리가 많다고 생각한다.
rdb와 객체지향 프로그래밍을 다룰 수 있도록 하는 장점이 있기 때문에 jpa를 최대한 활용할 것 같다.