JPA 란?

JinjuLog·2021년 2월 17일
0

Spring Framework

목록 보기
2/8
post-thumbnail

JAP란?

JPA는 Java Persistence API이다.

영속성 (persistence) : 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성은 파일 시스템, DB 등에 활용하여 구현

API (Application Programming Interface)

Interface : 상하관계가 존재하는 약속
protocol : 권리가 동등한 약속

🔸JPA = Java Persistence Application Programming Interface
자바 프로그램을 할때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스

JPA는 ORM 기술이다.

ORM = Object Relational Mapping : Object를 먼저 만들고 JPA 인터페이스를 통해서 데이터베이스를 자동 생성할 수 있다.
🔸JPA 관점에서 객체를 생성하면 DB 테이블을 자동 생성해준다.

원래는 class를 통해서 데이터베이스 테이블의 데이터를 모델링해야한다.
데이터베이스 테이블 -> class

Class Team {
	int id;
    String name;
    String year;
}

JPA는 반복적인 CRUD 작업을 생략하게 해준다.

Select(1건), Select All(전체), Delete, Update, Insert
Java <-> 반복 로직 <-> DB

🔸JPA 사용시 전송된 쿼리에 대한 응답이 있을때 이런 반복 로직을 함수 하나로 쉽게 해결 할 수 있다.

JPA는 영속성 context를 가지고 있다.

context : 어떤 대상에 붙는 순간 그 대상의 모든 정보

A 데이터 <-> 영속성 컨텍스트(모든 데이터 정보를 가지고 있음) <-> DB
먼저 A 데이터를 영속성 컨텍스트에 던진다음, 영속성 컨텍스트가 DB로 보내 저장
영속성 컨텍스트에서 A 데이터를 삭제하고 던지면 DB에서도 A 데이터 삭제 (동기화)

JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능)

데이터베이스 테이블이 FK를 가지게 되면 자바 class에서 오브젝트 객체를 가지게 되는데 이렇게 하면, 실제 DB테이블과 불일치하게 된다. 하지만 JPA에 ORM을 이용하면 해결 가능하다. 자바는 객체저장이 가능하다.

JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다.

상속, 컴포지션(결합), 연관관계

방언 처리가 용이하여 Migration하기 좋고, 유지보수에도 좋다.

스프링 <-> JPA <-> (추상화 객체 : 다양한 DB 종류) <-> DB : JPA가 처리할 수 있는 DB 종류가 다양하다.

0개의 댓글