Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

JPA? 본문

객체지향적으로 설계를 할 수록 관계형 DB에 매핑하기 어려워진다....뭔가 필요하다.

이에 대한 JAVA진형의 해답이 JPA

 

1. JPA?


  • Java Persistence API
  • Java ORM 기술 표준

 

 

2. ORM?


  • Object Relational Mapping(개체 관계 매핑)
  • 객체는 객체대로 설계
  • 관계형 DB는 관계형 DB대로 설계
  • ORM 프레임워크가 중간에서 매핑

 

 

3. JPA는 애플리케이션과 JDBC사이에서 동작


  • Java applicartion <->JPA <->JDBC->SQL->DB
  • JPA 동작 - 저장
    - JPA가 객체와 관계형 데이터베이스의 패러다임 불일치 해결!
  • JPA 동작 - 조회

4. JPA는 표준 명세


  • JPA는 인터페이스의 모음
  • JPA의 구현체가 Hibernate

 

 

5. JPA를 왜 사용해야 할까?


  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 생산성
    - 저장 : jpa.persist(member)
    - 조회 : jpa.find(memberId)
    - 수정 : member.setName("~~") --> JPA를 쓴다는건 자바 컬렉션에 넣었다뺐다 하는것과 유사하게.
    - 삭제 : jpa.remove(member)
  • 유지보수
    - 이전에는 필드 변경 시 모든 SQL 수정...ㄷㄷ
    - JPA쓰면 필드만 추가하면됨 ㄱㅇㄷ
  • 패러다임 불일치 해결
    - 객체와 관계형 데이터베이스의 패러다임 불일치 해결.
    - 상속 : 저장할 때 쿼리 나눠서 날려줌. 조회할  때 알아서 join해서 가져옴.
    - 연관관계, 객체 그래프 탐색
    - 신뢰할 수 있는 엔티티, 계층
    - 비교하기 : JPA는 동일한 Transaction에서 동일한 식별자로 조회한 엔티티는 같음을 보장.
  • 성능
    - 1차 캐시와 동일성 보장 
        * 같은 트랜젝션 안에서는 같은 엔티티를 반환
        * DB Isolation Level이 Read Commit이어도 애플리케이션 Repeatable Read 보장.
    - Transaction을 지원하는 쓰기 지연
        * Transaction을 commit할 때 까지 Insert SQL모음
        * JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송
    - 지연 로딩(Lazy Loading), 즉시로딩
        * 지연 로딩 : 객체가 getter로 실제 사용될 때 로딩(LAZY)
        * 즉시 로딩 : JOIN SQL로 한번에 연관도니 객체까지 미리 조회(EAGER)
  • 데이터 접근 추상화와 벤더 독립성
  • 표준

'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글

플러시, 준영속 상태, 정리  (0) 2021.08.08
영속성 컨텍스트 2  (0) 2021.08.08
영속성 컨텍스트  (0) 2021.08.08
Hello JPA  (0) 2021.08.08
JPA 시작, 프로젝트 세팅  (0) 2021.08.07
Comments