simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 참조타입
  • scanner #next() #nextLine()
  • 자바
  • controllerTest
  • 컨트롤러
  • 404
  • JVM메모리구조
  • 스프링
  • 자바메모리구조
  • null
  • 참조변수
  • 자바프로그램
  • 자바프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

Framework/Orm&Mapper

JPA란 무엇인가?

2022. 9. 27. 17:01

|  JPA

- JPA란, 자바에서 사용하는 ORM 기술 표준을 말한다.

* ORM : 객체와 RDBMS를 매핑해주는 기술

- JPA는 인터페이스의 모음으로, Hinernate / EclipseLink / DataNucleus가 이 명세를 구현했다.

 

|  JPA를 왜 쓸까?

1. SQL 중심 개발 -> Object 중심 개발

2. 생산성 : 데이터의 CRUD가 훨씬 쉬워진다.

저장 : jpa.persist(entity)

조회 : jpa.find(pk)

수정 : entity.setName(" ")

삭제 : jpa.remove(entity)

3. 유지보수 : 필드 변경 시 모든 SQL 수정 --> 필드를 하나만 더 추가

4. 패러다임 불일치 해결

rf. 객체와 관계형 DB의 차이

  객체 SQL
상속 객체 상속 관계 Table 슈퍼 타입 - 서브 타입 (Pk - Fk)
연관관계 참조 사용 (ex. member.getTeam()) 외래 키를 사용 (양방향 조인이 가능)
객체 그래프 탐색 상속 관계에서 부모 타입 사용 가능 서로 pk,fk를 통해 조인된 테이블끼리만 가능
비교하기 같은 참조값을 가진 객체는 서로 == 같다고 표현 동일한 트랜잭션에서 조회한 엔터티여야만 같다고 표현

5. 성능 :

(1) 1차 캐시와 동일성 보장

: JPA를 쓸 경우에 하나의 트랜잭션에서 다음 트랜잭션으로 넘어가기 전에 잠시 동안 캐시를 해주는 기능이 있다.

(2) 트랜잭션을 지원하는 쓰기 지연

insert JDBC BATCH SQL 기능을 통해 commit() 전까지 insert를 모아 한번에 전송한다.
update/delete update, delete로 인한 row 락 시간 최소화 - update, delete 후 바로 commit()

(3) 지연 로딩

* 일반적으로 지연 로딩으로 먼저 코딩 후, 최적화를 위해 자주쓰는 두 객체간 연관관계를 즉시 로딩으로 변경한다.

지연 로딩 객체가 실제 사용될 때에 로딩한다.

-- A 테이블을 조회, B 테이블을 조회 ... 식으로 지연하여 조회
즉시 로딩 Join을 통해 연관 객체를 미리 묶어 조회

-- A join B 를 통해 바로 조회 

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

7. 표준

 

|  역사

- JPA는 Java Persistence API 의 줄임말

- 이클립스 재단에서 가져가면서 Jakarta Persistence API 로 명칭 변경

- 과거에 EJB ORM이 있었다. --> 하이버네이트 (오픈 소스) --> JPA (자바 표준)

 

|  특징

- Annotation을 통해 매핑

- 기본형 타입에 대한 매핑 지원

- 밸류 타입에 대한 매핑 가능

- 클래스 간 연관관계 : 1:1, 1:N, N:1, N:M

- 상속 매핑 지원

 

 

[ 출처 ]

인프런 강의, [ 자바 ORM 표준 JPA 프로그래밍 - 기본편 ] 을 들은 후 정리한 내용입니다.

 

 

 

 

'Framework > Orm&Mapper' 카테고리의 다른 글

[JPA] 인텔리J에서 JPA Entity 기반 ERD 그리기  (0) 2022.10.19
[JPA] repository.save()의 반환값이 안 들어올 때  (0) 2022.10.19
[JPA] JPA 전반에 대해 간략히 이해하기  (0) 2022.10.06
[JPA] JPA 프로젝트를 생성, 엔터티 단위 CRUD (JPQL이란?)  (0) 2022.09.29
ORM 기술이란 무엇인가?  (0) 2022.09.27
    'Framework/Orm&Mapper' 카테고리의 다른 글
    • [JPA] repository.save()의 반환값이 안 들어올 때
    • [JPA] JPA 전반에 대해 간략히 이해하기
    • [JPA] JPA 프로젝트를 생성, 엔터티 단위 CRUD (JPQL이란?)
    • ORM 기술이란 무엇인가?
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바