BACKEND/JAVA & SPRING

JPA

이-프 2023. 5. 8. 21:33

ORM(Object-Relational Mapping)

객체와 관계형 DB를 매핑

  • ORM 프레임 워크를 사용시, 객체를 마치 자바 컬렉션에 저장하듯 저장 O
  • ORM 프레임워크가 적절한 SQL를 생성해서 DB에 객체를 저장


HIBERNATE

Java 진영의 다양한 ORM 프레임워크 중 가장 많이 사용되는 프레임워크

  • Hibernate기반으로 만들어진 ORM 기술 표준 = JPA


JPA (Java Persistence API)

자바 진영의 ORM 기술 표준 ORM for JAVA

  • JPA가 제공하는 API를 사용하면, 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL를 작성 X

  • JPA가 개발자 대신, SQL을 생성해서 DB에 전달 & 객체를 자동으로 Mapping해줌

  • JPA는 내부적으로 JDBC API를 활용함

    • JDBC API

      JAVA 프로그래밍 언어와 다양한 DB SQL 또는 테이블 형태의 데이터 사이에 독립적인 연결을 지원하는 표준

      ⇒ 다양한 형태의 관계형 DB에 접속하여 JAVA 프로그래밍 언어와 DB사이에 데이터를 주고받을 수 있도록 지원하는 표준 자바 응용 프로그래밍 인터페이스

      • 개발자가 직접 JDBC API를 활용시, 패러다임 불일치 & SQL 의존성 등으로 인해 효율성 떨어짐

        ∵ JPA를 활용 ⇒ SQL를 자동적으로 해결해줌





왜 사용해야하는가 ?

  • SQL 중심적인 개발에서 객체 중심으로 개발

  • 생산성

  • 유지보수

    만약 tel이란 컬롬이 추가되면, SQL다시 업데이트해야함

    BUT JPA는 필드만 추가하면됨 ⇒ SQL은 JPA가 알아서 처리해줌

  • 패러다임의 불일치 해결

    • JPA 와 상속
  • 성능

    • JPA의 성능 최적화

      • 1차 캐시와 동일성 보장

        같은 트랜잭션 안에서는 같은 엔티티를 반환

      • 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)

      • 지연로딩

        멤버를 조회할 때 한번에 팀 조회 = 즉시 로딩

        멤버를 조회할 때 팀 조회 매우 적음 = 지연로딩

        ⇒ 연관된 걸 바로 땡겨올 필요 없음 (진짜 객체가 조회/사용 될 때 땡겨오기)

  • 데이터 접근 추상화와 벤더 독립성

  • 표준

'BACKEND > JAVA & SPRING' 카테고리의 다른 글

DAO DTO Repository  (0) 2023.05.19
Servlet(서블릿)  (0) 2023.05.18
[J2KB] 회원관리  (1) 2023.02.17
[J2KB] API  (0) 2023.02.10
[J2KB] MVC와 템플릿 엔진  (1) 2023.02.10