본문 바로가기
JPA

자바 ORM 표준 JPA 기본편 - JPA 소개

by 그리득 2024. 3. 24.
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