[JPA] 1강. JPA 소개

매빈·2023년 5월 19일
0

JPA-programming

목록 보기
1/7
post-thumbnail

1. SQL을 직접 다룰 때 발생하는 문제점

  • 무한반복, 지루한 코드
  • SQL에 의존적인 개발을 피하기 어려움

2. 패러다임의 불일치

  • 객체 vs 관계형 데이터베이스
    • 상속
      • 객체: 상속 관계 O
      • table: 상속 관계 X, 비슷한 개념이 있지만 완전히 같지는 않음
        ➡️ 상속된 객체를 저장하기 위해서는... 객체 분해, insert 쿼리 각각 작성하고.. 엄청 복잡해짐
    • 연관관계
      • 객체: 참조를 사용
      • table: 외래 키를 사용( Join )
        ➡️ 테이블에 맞추어 객체를 저장하게 됨. 객체다운 모델링이 아님(참조를 통해 연관관계를 맺지 않기 때문)

3. JPA란 무엇일까?

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

    ORM(Object-relational mapping)

    • 객체는 객체대로, 관계형 db는 관계형 db대로 설계하고 orm 프레임워크가 중간에서 매핑
  • 애플리케이션과 JDBC 사이에서 동작
    • entity 분석
    • insert sql 생성
    • jdbc api 사용
    • 패러다임 불일치 해결
  • 애플리케이션과 JDBC 사이에서 조회
    • select sql 생성
    • Jdbc api 사용
    • resultset 매핑
    • 패러다임 불일치 해결
  • JPA는 표준 명세, 인터페이스의 모음(hibernate, eclipselink, datanucleus)
  • JPA를 왜 사용해야 하는가?
    • SQL 중심적인 개발에서 객체 중심으로 개발
    • 생산성 ➡️ jpa와 CRUD
      // 저장
      jpa.persist(member)
      // 조회
      Member member = jpa.find(memberId)
      // 수정
      member.setName("변경할 이름")
      // 삭제
      jpa.remove(member)
    • 유지보수
      • 기존: 필드 변경시 모든 SQL을 수정
      • JPA: 필드만 추가하면 됨
    • 패러다임의 불일치 해결
    • 성능
      • 1차 캐시와 동일성 보장
      • 트랜잭션을 지원하는 쓰기 지연: 트랜잭션을 커밋할 때까지 insert sql을 모은 후에 jdbc batch sql 기능을 이용하여 한 번에 sql 전송
      • 지연 로딩: 객체가 실제 사용될 때 로딩
    • 데이터 접근 추상화와 벤더 독립성
    • 표준

4. 정리

  • ORM은 객체와 관계형 DB 두 기둥 위에 있는 기술 (== 둘 모두 잘 알아야 한다)

0개의 댓글