JPA 소개

이승주·2024년 7월 23일

이 게시물은 김영한 강사님의 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 이 강의를 듣고 적은 게시물입니다.


지금 시대는 객체를 관계형 DB에 넣어 관리한다. 이는 SQL 중심적인 개발을 하게 되는데 이 문제점으로는 생각할 것이 많고 해야할 일이 복잡해진다. 하지만, 자바 컬렉션으로 저장 및 조회한다면 매우 간편하다. 따라서 객체를 자바 컬렉션에 저장 하듯이 DB에 저장하는 것처럼 하기 위해 JPA가 나온것이다.


JPA

-Java Persistence API
-자바 진영의 ORM 기술 표준

ORM?

object-relational mappin(객체 관계 매핑)
->객체와 RDB를 매핑
객체는 객체대로 설계하고 관게형 DB는 관계형 DB대로 설계하여 ORM 프레임워크가 중간에서 매핑해준다.
대중적인 언어에는 대부분 ORM 기술이 존재한다.




JPA를 왜 사용해야 하는가?

  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 생산성
  • 유지 보수
  • 패러다임의 불일치 해결
  • 성능
  • 데이터 접근 추상화와 벤더 독립성
  • 표준

생산성-JPA와 CRUD

  • 저장:jpa.persist(member)
  • 조회: Member member = jpa.find(memberId)
  • 수정: member.setName("변경할 이름")
  • 삭제: jpa.remove(member)

유지보수 - 기존:필드 변경시 모든 sql 수정

jpa:필드만 추가하면 됨, sql은 jpa가 처리

JPA와 패러다임의 불일치 해결

1.JPA와 상속
2.JPA와 연관관계
3.JPA와 객체 그래프 탐색
4.JPA와 비교하기

JPA와 상속





JPA의 성능 최적화 기능

  • 1.1차 캐시와 동일성(identity)보장
  • 2.트랜잭션을 지원하는 쓰기 지연
    1. 지연 로딩(Lazy loading)

1차 캐시와 동일성 보장

1.같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회성능 향상
2.DB Isolation Level이 read commit이어도 애플리케이션에서 repeatable read보장

트랜잭션을 지원하는 쓰기 지연 - INSERT

1.트랜잭션을 커밋할 때까지 insert sql을 모음
2.JDBC BATCH SQL기능을 사용해서 한번에 SQL 전송
업#### 로드중..

트랜잭션을 지원하는 쓰기 지연 - UPDATE

1.UPDATE,DELETE로 인한 로우락 시간 최소화
2.트랜잭션 커밋 시 UPDATAE, DELETE SQL실행하고, 바로 커밋

ORM은 객체와 RDB 두 기둥위에 있는 기술

profile
백엔드개발자가 되고싶습니다.

0개의 댓글