[SpringBoot] JPA 개념 잡기 - 4강
1. JPA란?
- JPA는 Java Persistence API 이다.
- JPA는 ORM 기술이다.
- JPA는 반복적은 CRUD 작업을 생략하게 해준다.
- JPA는 영속성 컨텍스트를 가지고 있다
- JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체 저장 불가능)
- JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)
- 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음.
- JPA는 쉽지만 어렵다.
RAM은 전기로 데이터를 저장하는 휘발성 메모리
ㄴ 컴퓨터가 꺼지면 사라짐
ㄴ 정전 등
ㄴ 데이터가 날라가지 않도록 하드디스크에 기록 하게되면 하드디스크는 비활성이기에 영구적으로 저장이 된다.
ㄴ 영속성 : 어떤 하나의 데이터가 영구히 기록될 수 있게 해주는 것.
ㄴ 자바는 데이터 저장을 하드디스크가 아닌(하드디스크에 하긴 하지만 시스템이 달라)
ㄴ DBMS라 불리는데
ㄴ 하드디스크에 특정영역을 잘라서 데이터를 관리한다.
ㄴ 데이터베이스 관리 시스템
ㄴ 데이터는 하드디스크가 아닌 DBMS로 관리를 한다.
ㄴ JPA : 자바에 데이터를 영구히 기록할 수 있는 환경을 제공
API
여기서 잠깐!! 프로토콜과 인터페이스는 뜻은 같지만 의미하는 바가 다르다
1. 프로토콜(약속)
- 권리가 동등하다.
- B : 이제부터 나에게 연락을 할때는 전화로 하지말고 직접 찾아와!
- A,C : 싫어!
- B : ...
- 프로토콜은 동등한 관계이니 B가 뭐라 못해
- 세명이 동의할 수 있는 프로토콜을 만든다.
2. 인터페이스(약속)
- B : 이제부터 나에게 연락을 할때는 전화로 하지말고 직접 찾아와!
ㄴ A와 C는 이 인터페이스(B)에 연락을 할때 직접 걸어와서 연락을 해야해.
ㄴ 왜 그럴까? 프로그램 하나를 만들때 좋은 기능이 2개가 있는데 다른 사람과 공유를 하고 싶은데
ㄴ 공유를 해주니까 사용할 수 있는데
ㄴ B개발자가 a데이터를 사용하고자하려는데 개발자 A가 a데이터 사용을 원하면 밤12시까지 ~ 새별 6시까지 사용가능해 (A개발자가 파워가 있는거지 규칙)
ㄴB개발자가 A개발자의 a데이터를 사용하여 프로그램을 짜면 그게 바로 API이다.
결론 : 인터페이스는 상하관계가 존재하는 약속이다
JPA
- JAVA
- Persistence : 영구적
- Application Programing interface
JPA => 자바를 영구적으로 보관할 수 있게 해주는 인터페이스이다.
출처 : 스프링부트 개념정리 4강 - JPA란 무엇인가요? - 최주호 강사