[Spring boot] JPA란?

yjkim97·2023년 5월 7일
0

Spring & Spring boot

목록 보기
6/6
post-thumbnail

JPA란?

  • JPA (Java Persistence API)
  • API (Application Programing Interface)

Persistence(영속성)

  • 데이터를 생성한 프로그램이 종료되어도 사라지지 않는 데이터의 특성이다.
  • 영속성은 파일 시스템, 데이터베이스 등을 활용하여 구현된다.

Java는 HD 일부 영역을 잘라서 데이터를 저장하고 관리한다.
이를 위한 시스템이 따로 존재하고 이것을 DBMS (DataBase Management System)이라고 한다.

1. 정의

✅ Java 프로그래밍시 데이터를 영구적으로 DBMS에 저장하고 관리하기 위한 API(인터페이스) 이다.


2. 특징

1) ORM 기술

Object Relational Mapping

2) 반복적인 CRUD 생략

3) 영속성 Context를 가짐

Context : 대상에 대한 모든 정보

Java 프로그램은 DB에 저장해야하는 모든 정보를 가지고 있다.

DB에서 데이터를 조회, 저장하는 과정

  1. 프로그램에서 A데이터를 조회 요청
  2. 영속성 Context에 해당 데이터가 있으면 DB까지 안가고 Context에 있는 데이터 리턴
  3. 영속성 Context에 해당 데이터가 없으면 DB에서 해당 데이터 조회한 후 영속성 Context에 저장후 리턴
  4. 프로그램에서 A데이터 수정 요청
  5. 영속성 Context의 A데이터를 수정한 후 DB에 있는 데이터 수정

4) DB와 OOP의 불일치성을 해결하기 위한 방법론 제공

개발자가 프로그래밍 할때 OOP로 모델링하면 디비 저정/조회시 JPA가 알아서 DB 데이터타입 <-> OOP로 매핑해서 처리한다.

5) OOP관점에서 모델링 할 수 있게 해준다.

위 4번 항목으로인해 개발자는 OOP관점 모델링이 가능하다.

6) 마이그레이션에 좋음

JPA는 수많은 DB를 지원해준다.
JPA는 DB 추상화 객체를 가지고 있어 만일 오라클레서 MySQL로 마이그레이션을 해야하는 경우 추상화객체만 바꾸면 된다. (개발자가 connection, query 등을 수정할 필요가 없다.)


음.. 나는 마이바티스만 사용했는데.. JPA 써봐야겠다..


📎 참고 : 스프링부트 개념정리(이론) - 최주호

profile
어제는 🐸두꺼비 오늘은 😄YJ

0개의 댓글