JPA 소개

수 빈·2022년 2월 4일

JPA 기본

목록 보기
1/11
post-thumbnail

📌 SQL 중심적인 개발의 문제점

애플리케이션 => 객체 지향 언어, 데이터베이스 => 관계형 DB
현 시대는 객체관계형 DB에 관리함

SQL 중심적인 개발의 문제점: 무한 반복, 지루한 코드
ex) 객체 CRUD

public class Member {
    private String memberId;
    private String name;
}
INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES
SELECT MEMBER_ID, NAME FROM MEMBER M
UPDATE MEMBER SET

여기서 Member 객체에 필드가 추가된다면..

public class Member {
    private String memberId;
    private String name;
    private String tel; // 새로운 필드 추가됨
}
INSERT INTO MEMBER(MEMBER_ID, NAME, TEL) VALUES
SELECT MEMBER_ID, NAME, TEL FROM MEMBER M
UPDATE MEMBER SET … TEL = ?

새로운 필드로 인해 SQL문의 쿼리들도 그에 맞춰 전부 수정해야 함..
즉, SQL의존적인 개발을 피하기 어려움

객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수는 없나?
=> JPA


📌 JPA 소개

⭐ JPA

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

⭐ ORM

  • Object-relational mapping(객체 관계 매핑)
  • 객체는 객체대로 설계
  • 관계형 데이터베이스는 관계형 데이터베이스대로 설계
  • ORM 프레임워크가 중간에서 매핑
  • 대중적인 언어에는 대부분 ORM 기술이 존재

📍 JPA는 애플리케이션과 JDBC 사이에서 동작함

📍 JPA는 표준 명세

  • JPA는 인터페이스의 모음
  • JPA 2.1 표준 명세를 구현한 3가지 구현체 (하이버네이트, EclipseLink, DataNucleus)
    image

📍 JPA를 왜 사용해야 하는가?

  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 생산성
    • 저장: jpa.persist(member)
    • 조회: Member member = jpa.find(memberId)
    • 수정: member.setName(“변경할 이름”)
    • 삭제: jpa.remove(member)
  • 유지보수
    • 위의 예시에선 필드 변경시 모든 SQL을 수정해야 했지만, JPA 사용 시 필드만 추가하면 됨
    • SQL은 JPA가 처리
  • 패러다임의 불일치 해결
    • 상속, 연관관계 등
  • 성능
    • 1차 캐시와 동일성(identity) 보장
    • 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
    • 지연 로딩(Lazy Loading)

'자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 학습한 내용을 정리하였습니다.

0개의 댓글