1. JPA 란?
1) Java Persistence API 이다.
2) ORM 기술이다.
3) 반복적인 CRUD 작업을 생략하게 해준다.
4) 영속성 컨텍스트를 가지고 있다.
5) DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. ( DB는 객체 저장 불가능)
6) JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. ( 상속, 콤포지션, 연관관계)
7) 방언 처리가 용이하여 Migration 하기 좋다. 유지 보수에도 좋다.
8) JPA 는 쉽지만 어렵다.
1) Java Persistence API 이다.
영속성은 어떠한 데이터가 영구히 기록될 수 있게 해주는 것이다.
RAM에 있는 데이터는 휘발성이기 때문에 컴퓨터가 꺼지거나, 예상치 못하게 정전이 된다면 데이터는 사라지게 된다.
그렇기 때문에 하드디스크에 기록을 하여 영구적으로 저장이 한다.
DBMS에서 관리를 하는데 JPA는 영구히 기록할 수 있는 환경을 제공한다.
JPA는 Java 프로그래밍을 할때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스이다.
클래스를 먼저 만들고 클래스를 토대로 자동생성해서 DB에 테이블을 만들어 준다.
2) ORM 기술이다. (Object Relational Mapping)
class를 통해서 데이터베이스에 있는 것을 모델링한다.
DB에 있는 데이터를 자바에 모델링으로한다.
이것을 반대로 하게 되었을 때 JPA 에 있는 인터페이스의 규칙을 지키면서
자바에서 클래스를 만들어 실행을 하면 데이터 베이스에 테이블이 자동으로 생성되게 하는 기법을 ORM이라고 한다.
3) 반복적인 CRUD 작업을 생략하게 해준다.
자바프로그램에서 DB에게 연결하기 위해 커넥션을 요청하면 DB는 세션을 오픈한다.
두번째 요청시에는 쿼리를 전송할 수있다. 테이블에 있는 데이터를 자바에 응답하게 되는데
둘의 타입이 다르므로 자바는 자바 object 로 변경하는 단순한 반복 로직이 되는데 이것을 줄이게 해주는 것이 JPA가 된다. CRUD를 할 수 있게 JPA가 도와준다.
4) 영속성 컨텍스트를 가지고 있다.
영속성이란 어떤 데이터를 영구적으로 저장하게 해주는 것이다.
자바에서는 이런 것을 파일시스템이 아니라 DB에 저장을 한다.
컨텍스트는 어떤 대상에 달라붙을 수 있다. 대상에 대한 모든 정보를 가지고 있다.
예를들어서 자바 프로그램에서 동물데이터를 저장하기 위해서 바로 DB에 저장하는 것이 아니라
중간에 영속성 컨텍스트라는 것에 던진다. 영속성 컨텍스트는 DB에 던진다.
동물데이터 -> 영속성컨텍스트 -> DB
자바가 DB에 저장해야 하는 모든 것을 가지고 있으며 자동으로 처리된다.
5) DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. ( DB는 객체 저장 불가능)
자바는 객체저장이 가능하다. DB로 밀어 넣을 때 JPA가 자동으로 FK 심어준다.
'Springboot' 카테고리의 다른 글
[MSA] 1. Spring cloud Anrifragile & 아키텍처 (0) | 2023.12.22 |
---|---|
DTO 사용 방법 (0) | 2022.05.03 |
[SpringBoot & JPA ] 판매자 POST와 GET 방식 (0) | 2022.02.14 |
[Charter6] Controller 파라미터 (0) | 2021.11.21 |
MVC, 템플릿 엔진 (0) | 2021.09.24 |