[JPA 프로그래밍 - 기본편] JPA 시작하기

지현·2022년 2월 3일
0

JPA

목록 보기
2/12

JPA

  • ORM 기술 표준
  • ORM : 객체 관계 매핑
    • 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계
    • ORM 프레임워크가 중간에서 매핑

JPA를 사용해야 하는 이유

  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 생산성 : CRUD가 간단해짐
  • 유지보수가 간편
  • 패러다임의 불일치 해결
    • 상속 : JPA가 알아서 저장시에는 insert 문을 여러개 날려주고, 조회시에는 join 해줌
    • 연관관계
    • 객체 그래프 탐색 : 지연로딩과 즉시 로딩을 통해 관련된 객체를 가져올 수 있음
    • 비교 : 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
  • 성능
    • 1차 캐시와 동일성 보장
    • 트랜잭션을 지원하는 쓰기 지연
    • 지연 로딩

데이터베이스 방언

  • JPA는 특정 데이터베이스에 종속되지 않음
  • 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다른데, JPA를 사용하면 설정을 통해 데이터베이스 방언 지원

JPA 구동 방식

  • 엔티티 매니저 팩토리는 애플리케이션 로딩 시점에 딱 하나만 만들어야함
    • 하나만 생성해서 애플리케이션 전체에서 공유
  • 일관적인 단위를 할때마다(고객의 요청이 올 때마다) 엔티티 매니저를 생성
    • 엔티티 매니저는 쓰레드간에 공유 X (사용하고 버려야 함)
  • 사용을 다 하고 나면 엔티티 매니저, 엔티티 매니저 팩토리를 꼭 닫아줘야함
  • 스프링을 사용하면 이 작업(생성, 종료)들을 스프링이 다 해줌
  • JPA의 모든 데이터 변경은 트랜잭션 안에서 실행 (조회는 트랜잭션 선언하지 않아도 동작)

JPQL

  • JPA를 사용하면 엔티티 객체를 중심으로 개발하기 때문에 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 > JPQL 사용
  • 객체 지향 SQL
  • JPQL은 엔티티 객체를 대상으로 쿼리하고, SQL은 데이터베이스 테이블을 대상으로 쿼리
  • SQL을 추상화해서 특정 데이터베이스 SQL에 의존 X
  • 방언을 바꿔도 JPQL를 변경할 필요 X


출처
[인프런] 자바 ORM 표준 JPA 프로그래밍 - 기본편

0개의 댓글

관련 채용 정보