Develope/DataBase

[JPA] 1-3. ORM 이란? JPA 소개

고로이 2021. 5. 30. 22:40
반응형

1-3. ORM 이란? JPA 소개

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔

www.inflearn.com

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788960777330

 

자바 ORM 표준 JPA 프로그래밍 - 교보문고

스프링 데이터 예제 프로젝트로 배우는 전자정부 표준 데이터베이스 프레임 | ★ 이 책에서 다루는 내용 ★■ JPA 기초 이론과 핵심 원리■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로

www.kyobobook.co.kr

 

정리 : 

* JPA의 이점

1) SQL에서 객체 중심적인 개발로 변경하여 패러다임의 불일치 해결

2) 단순 CRUD 작업을 하지 않아 코드 생산성 증가

3) 기존 필드 변경시에 수행하면 작업들을 하지 않아 유지보수성 증가


1. ORM이란?

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

2. JPA의 동작

패러다임의 불일치 해결

  • Insert

JPA의 Entity 분석

Insert SQL JPA가 생성

JDBC API사용

 

  • select

Select SQL 생성

JDBC API 사용

ResultSet 매핑

 

3. JPA란

  • Jpa 자체 는 표준의 명세이다.
  • 인터페이스 모음
  • *Hibernate, EclipseLink, DataNucleus

 

3. JPA 를 왜 사용해야 하는가?

  • SQL->객체 중심적인 개발
  • 생산성
    • 저장 : jpa.persist()
    • 조회 : jpa.find(id)
    • 수정* : obj.setName()
    • 삭제 : jpa.remove
  • 유지보수
    • 기존은 필드 변경 시 VO와 SQL 모두 CRUD 수정
  • 패러다임의 불일치 해결
    • 상속
      • jpa.persist() 함수만 실행
      • 내부적인 insert 작업은 알아서 실행해준다
      • ex) persis(album); => insert into item / insert into album
      • ex) find(album.class, id) => select from item join album
    • 연관관계
    • 객체 그래프 탐색
      • 신뢰할 수 있는 엔티티와 계층
      • member.getTeam() 하는 순간에 sql로 조회한다.
    • 비교
      • 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
  • 데이터 접근 추상화와 벤더 독립성
  • 성능
    • 1차 캐시와 동일성(identity) 보장
      • 같은 트랜잭션 안에서는 같은 엔티티를 반환 : 컈싱으로 조회 성능 향샹 ( sql은 1번만 실행 )
      • DB Isolation level 이 read commit 이어도 애플리케이션에서 repeatable Read 보장 (?)
    • 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)
      • 트랜잭션을 Commit할 때까지 INSERT SQL을 모음 (transation.start() => transation.commit())
      • JDBC Batch SQL 기능을 이용해서 한번에 SQL 전송
    • 즉시 로딩과 지연 로딩 (lazy loading)
      • 지연 로딩 : 객체가 실제 사용될 때 로딩
      • 즉시 로딩 : Join sql로 한번에 연관된 객체까지 미리 조회
      • 지연 로딩으로 개발 후 즉시 로딩으로 최적화
  • 표준

 

반응형