728x90
목표
JPA가 언제 동작하는지 어떻게 돌아가는지 이해가 우선!
- RDBMS - 객체를 관계형 DB에 보관, SQL 중심적인 개발의 문제점
- CRUD 무한 반복, 지루한 코드
- SQL에 의존적인 개발을 피하기 어렵다.
ORM 이란?
- Object-relational mapping(객체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스대로 설계
- ORM 프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM 기술이 존재
- JPA는 애플리케이션과 JDBC 사이에서 동작
- persist(저장),find(조회),setName(수정),remove(삭제)
JPA의 성능 최적화 기능
- 1차 캐시와 동일성(identity)보장
- 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상 - 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
- 지연 로딩(Lazy Loading)과 즉시 로딩
- 지연 로딩 : 객체가 실제 사용될 때 로딩
- 즉시 로딩 : JOIN SQL로 한번에 연관된 객체까지 미리 조회
JPQL
- JPA를 사용하면 엔티티 객체를 중심으로개발
- 문제는 검색 쿼리 -> 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색
- 모든 DB데이터를 객체로 변환해서 검색하는 것은 불가능
- 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요
- JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
- SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HABING, JOIN 지원
- JPQL은 엔티티 객체를 대상으로 쿼리
- SQL은 데이터베이스 테이블을 대상으로 쿼리
- 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리
- SQL을 추상화해서 특정 데이터베이스 SQL에 의존 X
- JPQL을 한마디로 정의하면 객체 지향 SQL
'JPA' 카테고리의 다른 글
자바 ORM 표준 JPA 기본편 - 고급매핑 (0) | 2024.04.12 |
---|---|
자바 ORM 표준 JPA 기본편 - 다양한 연관관계 매핑 (0) | 2024.04.04 |
자바 ORM 표준 JPA 기본편 - 연관관계 매핑 기초 (4) | 2024.04.01 |
자바 ORM 표준 JPA 기본편 - 엔티티 매핑 (0) | 2024.03.29 |
자바 ORM 표준 JPA 기본편 - 영속성 관리 (0) | 2024.03.26 |