본문 바로가기
Spring/JPA

JPA개념

by 불면증김씨 2022. 1. 14.

JPA란?

  • Java Persistence API이다.
  • ORM 기술이다.
  • 반복적인 CRUD 작업을 생략하게 해준다.
  • 영속성 컨텍스트를 가지고 있다.
  • DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다.(DB는 객체저장 불가능)
  • OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 컴포지션, 연관관계)
  • 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음.

 

 

                [1] Java Persistence API이다.                   

 

Java

Persistence

Application

Programing

Interface

 

-> 자바 프로그램에 있는 데이터를 영구적으로 보관해주는 API이다.

ORM을 사용하기 위한 인터페이스를 모아둔 것.

자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.

 

 

1.1 Persistence

영속성(persistence)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.

영속성은 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 구현한다.

 

1.2 인터페이스

인터페이스 / 프로토콜

:약속            :약속

인터페이스

 

1.2 프로토콜

프로토콜

 

 

                      [2] ORM 기술이다.                    

 

ORM (Object Relational Mapping)

-> 오브젝트를 데이터베이스에 연결하는 방법론 같은 개념

데이터를 보내거나 가져올 때, 자바가 가지고 있는 데이터타입과 DB가 가지고 있는 데이터타입이 다르다.

그래서 Class를 통해서 DB에 있는 테이블을 모델링 해야 한다. 순서는 DB에 테이블이 먼저 생성되고 이를 자바에서 가져온다.

 

 

모델링이란?

 

ORM은 자바에서 먼저 생성하고 이를 실행하면 DB에서 테이블이 생성되는 기법이다.

 

 

 

 

                  [3] 반복적인 CRUD 작업을 생략하게 해준다                       

 

기존 CRUD 작업 과정

이 과정을 ORM이 단순하게 해결해준다.

 

 

 

                      [4] 영속성 컨텍스트를 가지고 있다                   

 

영속성(persistence): 데이터를 영구적으로 저장!

컨텍스트(context):

컨텍스트란?
영속성 컨텍스트

 

 

               [5] DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다             

 

 

DB와 자바의 데이터

 

ORM을 이용하면 모델을 만들 때, 자바가 주도권을 쥐고 있는 모델을 아래 방식으로 만들 수 있다. 이렇게 들어간 데이터를 insert하거나 select할 때, JPA가 자동으로 맵핑해서 데이터를 Team오브젝트에  넣어준다. 이걸 DB에 밀어넣을 때는 JPA가 자동으로 FK를 넣어준다.

 

 

ORM을 이용한 방식 

 

 

               [6] OOP의 관점에서 모델링을 할 수 있게 해준다.               

 

 

composition

Class에 따라 자동생성 되어 DB에 테이블이 만들어진다. 여기서 Engine engine은 하나의 데이터를 들고 있는 것이 아니라 object이다. object는 여러개의 데이터를 들고있을 수있기 때문에 Engine테이블도 생성이 된다.

 

 

extends

Engine처럼 object를 들고 있는 것이 아니라 상속을 하면서 필드가 2개 생기게 된다. 그렇기 때문에 새로운 테이블이 생성되는 것이 아닌 기존 테이블에 상속된 컬럼이 추가가 된다.

 

 

여러가지 dialect가 있다. 예를 들어 글을 쓸 때,  연필(오라클)을 쓰던 볼펜(마리아)을 쓰던 색연필(mysql)을 쓰던 손(추상화 객체)이 있다면 무엇을 쓰던지 자유롭게 바꿔 쓰는 것에 문제가 없다.

댓글