Java Persistence API의 약자로, 자바 진영의 ORM 기술 표준이다.
Object-relational mapping(객체 관계 매핑)의 약자로,
객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계하여, ORM 프레임워크가 중간에서 매핑 하는 기술이다.
대중적인 언어에는 대부분 ORM 기술이 존재한다.
SQL 중심적 개발 방식은 진정한 의미의 계층 분할이 어렵다.
엔티티를 신뢰할 수 없다.
SQL에 의존적인 개발을 피하기 어렵다.
SQL을 사용하게되면 CRUD의 SQL 문법을 반복적으로 작성, 수정을 해줘야 한다.
JPA는 보다 편리한 CRUD API를 제공한다.
객체지향적 개발의 패러다임을 기존의 DB에서 표현하기가 힘들다.
이와 관련하여 상속 관계, 연관 관계나 객체 그래프 탐색 등의 문제를 처리하기 위해 많은 노력이 필요하다.
JPA는 1차 캐시와 동일성(identity) 보장, 트랜잭션을 지원하는 쓰기 지연, 지연 로딩 등의 기능을 통해 보다 나은 성능을 제공한다.
H2 DB란, H2DB는 자바 기반의 오픈소스 관계형 데이터 베이스 관리 시스템(RDBMS )입니다.
H2DB는 서버(Server) 모드와 임베디드(Embedded) 모드의 인메모리 DB 기능을 지원합니다. 물론 디스크 기반 테이블을 또한 생성할 수 있습니다.
또한 브라우저 기반의 콘솔모드를 이용할 수 있으며, 별도의 설치과정이 없고 용량도 2MB(압축버전) 이하로 매우 저용량 입니다. DB자체가 매우 가볍기 때문에 매우 가볍고 빠르며, JDBC API 또한 지원하고 있습니다.
SQL 문법은 다른 DBMS들과 마찬가지로 표준 SQL의 대부분이 지원됩니다.
이러한 장점들 때문에 어플리케이션 개발 단계의 테스트 DB로서 많이 이용된다.
김영한 강사님께서 Dependency를 주입할 때 권장 버전을 선택하는 방법을 알려주셨다.
Spring.io -> Project.Spring Boot 에서 내가 사용하는 Spring Boot의 버전을 확인한다.
해당 버전의 Reference Doc 를 참고하여 Dependency Versions 에서org.hibernate
의 버전을 확인하여 사용한다.
또한 H2 DB의 다운로드 버전을 확인하여, 내가 받은 버전을 넣어줘야 한다. (1.4.200)
JPA의 기초 설정을 위해 resources.META-INF.persistence.xml
파일이 필요하다.
주로 JDBC의 구조에 관한 설정이다.
어떤 driver를 사용할지, DB의 user와 password, DB의 url을 지정해준다.
dialect는 사용할 DB의 방언 설정을 위한 속성이다.
DB마다 조금씩 다른 문법을 알아서 맞춰준다. 사용할 DB를 넣어주면 된다.
주석으로 대체한다.
H2 DB를 설치했으면, 터미널을 통해 H2가 설치된 위치로 이동하여 H2/bin
에서 $ ./h2.sh -webAllowOthers
를 통해 H2를 실행시켜준다.
-webAllowOthers
옵션을 붙여줘야 웹 콘솔에서 조작이 가능 하다.
이제부터 JPA를 공부해보자..