1. JPA란?
JPA는 Java Persistence API이다. -> 자바 프로그램을 할때 영구적으로 데이터를 저장하기 위해 필요한 '인터페이스'이다.
-> '영속성' : 비휘발성(마치 하드디스크)
-> API : Application Programming Interface : 프로그램을 프로그래밍하기위한 인터페이스(약속)
'인터페이스'는 상하관계가 존재하는 약속
'프로토콜'은 상하관계가 존재하지 않는 동등한 관계이다.
JPA는 ORM 기술이다.
ORM -> Object Relational Mapping : '오브젝트(객체)'를 '데이터베이스'에 연결하는 방법론 : 나의 하인!
-> 자바의 클래스를 통해서 데이터베이스에 있는 테이블을 '모델링'해야 한다. -> 추상적인 개념을 현실세계에 뽑아낸다.
'DB세상'에 있는 데이터를 '자바세상'에 모델링한다. -> 내가 만든 '클래스'를 통해서 자동으로 '테이블'이 생성되게 한다
JPA는 반복적인 CRUD 작업을 생략하게 해준다
SELECT All, DELETE, UPDATE, INSERT 등의 굉장히 자주 일어나는 반복적인 행위들을 생략해준다.
자바(Connection) -> 세션오픈, 쿼리전송 -> DB : 다시 반환할 때 Data를 '자바 Object'로 바꿔준다. 그리고 Connection을 끊는다. 이 모든 일련의 과정들을 '함수'하나로 제공해준다. JPA가 단순하게 처리하도록 도와준다.(반복작업)
JPA는 '영속성 컨텍스트'를 가지고 있다.
영속성 : 데이터 -> '영구적'으로 저장(Persistence)
컨텍스트 : "그 대상의 모든 정보를 가지고 있는것"
-> 자바가 해야하는 모든 메타데이터들은 '영속성 컨텍스트'가 전부 가지고 있다.
JPA(ORM)는 DB와 'OOP의 불일치성'을 해결하기 위한 방법론을 제공한다 - DB는 '객체저장' 불가능.
JPA는 'OOP의 관점'에서 모델링을 할 수 있게 해준다. - 상속, 컴포지션, 연관관계
'방언 처리'가 용이하며 Migration하기 좋음. 유지보수에도 좋음
JPA는 쉽지만 어렵다.
'메타코딩 SNS프로젝트' 카테고리의 다른 글
SNS프로젝트 초기설정 (0) | 2022.07.13 |
---|---|
SNS 프로젝트 chapter1. 환경설정 (0) | 2022.07.13 |
스프링부트 개념정리 with JPA 1강 - 스프링의 핵심은 무엇인가요? (0) | 2022.07.12 |
57. chapter 10 - 댓글 - View 렌더링하기 (0) | 2022.07.11 |
56. chapter 10. 댓글 - 댓글쓰기 DTO 생성 및 DB에 INSERT하기 (0) | 2022.07.11 |