스프링부트 강좌 with JPA 4강 - JPA란 무엇인가요?
1. JPA란?
● JPA는 Java Persistence API 이다.
● JPA는 ORM기술이다.
● JPA는 반복적인 CRUD작업을 생략하게 해준다.
● JPA는 영속성 컨텍스트를 가지고 있다.
● JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다(DB는 객체저장 불가능)
● JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다(상속, 컴포지션, 연관관계)
● JPA는 쉽지만 어렵다.
1) 스프링 영속성이란??
RAM은 전기로 데이터를 저장하므로 휘발성으로 저장된다. 즉 컴퓨터가 꺼지면 데이터가 다 사라진다.
그러면 데이터가 날라가지 않도록, RAM에 있는 데이터를 하드디스크에 기록하게 되면?
하드디스크는 비휘발성이므로 영구적으로 저장된다.
Persistence는 어떤 데이터가 영구히 기록되게 해주는 것!
자바에서는 데이터 저장을 파일시스템인 하드디스크에 하는게 아니다!
영역이 조금 다른데, 하드디스크에 특정 영역을 조금 잘라서
이 영역을 데이터베이스가 관리할 수 있도록,, DB 시스템으로 관리한다. 여기에 기록한다.
JPA에서 Java Persistence API 란??
JAVA에 있는 데이터를 해당 특정 영역에 영구히 기록할 수 있는 API라는 것!
2) API 개념
그렇다면,,,API란??
-애플리케이션(A) -> 프로그램
-프로그래밍(P) -> 프로그램을 만드는 방법! 프로그래밍
-인터페이스(I) -> 인터페이스를 통해서 프로그래밍을 한다
*프로그램을 만들기위해 제공해주는 인터페이스란??
프로토콜 과 인터페이스의 차이점을 알아보자!
프로토콜은 약속을 의미 VS 인터페이스도 약속을 의미하는데, 약속의 방식이 조금 다름
A B C 세 사람 중에 B가 힘이 가자 세다
B가 말하길, "이제부터 나에게 연락할 때, 전화하지 말고 직접 찾아와!!"
A와 C는 힘이 없어서,, 이 규칙을 어쩔수 없이 지키게 된다. 이 규칙이 인터페이스이다!
-인터페이스 예시
어떤 프로그램을 만드는데 2가지 기능이 있다.
a기능과 b기능 두가지 기능이 너무 좋아서 다른 사람들과 공유하고 싶은데
이 프로그램을 만든 '장보고'가 이렇게 말한다.
a데이터 사용을 원하면? "밤12시에서 새벽6시까지 가능해! 그때만 써!" 이러한 인터페이스
장보고는 다른 사람에게 공유해도 되고, 안해도 되는 힘이 있다. 규칙 정할때 상의 안하고 규칙을 정함
이 규칙을 따라서 a데이터를 받아서 프로그램을 짜면? 이게 API이다.
인터페이스는 상하관계가 존재하는 '약속'
-프로토콜 예시
A B C가 있을때, 3명의 권리가 동등하다.
B가 아까처럼, 이제부터 나에게 얘기할때 직접 찾아와! 라고 얘기하는데,
A C가 싫어! 라고 말 할 수 있다. 이때 B는 A C와 동등한 관계이므로, 다른 대안책을 제시하고
3명이 동의할 수 있는 프로토콜을 만든다. 그래서 "이메일로 연락하자"라고 정함. 이게 프로토콜
www 인터넷 세상은 인터페이스가 아닌 프로토콜로 만들어져있다. 수많은 프로토콜이 모여서 만들어진 것!
JPA는?
Java 자바 프로그램을 할 때,
Persistence 영구적으로 데이터를 저장하기 위해서 필요한
Application Programming Interface 인터페이스이다.