[JPA] 3. JPA 프로젝트 세팅
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다.
1. DataBase 설치
- H2 DataBase 사용
Oracle or MySQL 대신 H2 DataBase를 사용하는 이유????
- 실습에 최적화된 DB
- 가벼움(1.5MB)
- 웹용 쿼리 툴 제공
- Oracle, MySQL DB 시뮬레이션 가능
- Sequence, Auto Increment 기능 지원
설치 방법
1) 아래의 페이지에서 자신의 플랫폼에 맞게 다운로드 진행.
H2 Database Engine (redirect)
H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo
www.h2database.com
2) 설치 후, 윈도우 검색 창에 h2라고 입력하여 H2 console 실행 or 주소창에 127.0.0.1:8082 입력
(필자는 윈도우 10 사용중)
3) 연결 클릭
4) 체크된 영역에서 쿼리를 날릴 수 있다.
2. Java Project 설치
- IDE : IntelliJ Community
- Maven Build
1) java 라이브러리, 빌드 관리
2) maven repository로 부터 라이브러리 자동 다운로드 및 의존성 관리
3) Java 8버전 이상에서 사용하는 걸 권장
(cmd에서 'java -version' 입력 시 자바 버전 확인 가능. 명령을 찾을 수 없다고 뜨는 경우 java가 설치되지 않았거나 환경변수를 제대로 잡지 못한 경우임)
→ 아래의 dependency를 추가
<dependencies>
<!-- h2DataBase -->
<!-- version은 pc에 설치한 h2데이터베이스와 맞춰줘야함!! -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.210</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.10.Final</version>
</dependency>
</dependencies>
groupId : h2database
→ h2database와 연동하기 위해 추가
groupId : org.hibernate / artifactId : hibernate-entitymanger
→ hibernate core, hibernate 기반 jpa 등 사용하기 위해 추가
(만일 pom.xml에서 빨간 글씨가 나오는 경우, 우측 상단의 maven reload 버튼을 클릭하여 해결할 수 있다.)
3. JPA Setting
- /META-INF/persistence.xml
<!-- persistence.xml Sample -->
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<!-- JPA 이름. 여기선 hello로 설정 -->
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<!-- DB 접속 정보 설정 -->
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<!-- DB 방언 설정 -->
<!-- 각 특정 데이터베이스마다 다른 문법을 알아서 통역? 해주는 기능이라고 볼 수 있음 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<!-- 생성된 쿼리 보여주기 -->
<property name="hibernate.show_sql" value="true"/>
<!-- 생성된 쿼리를 보여줄 때 가독성 좋게 보여줌 -->
<!-- show_sql이 false라면 이 옵션은 무의미해짐 -->
<property name="hibernate.format_sql" value="true"/>
<!-- 추가적인 주석을 표시 -->
<property name="hibernate.use_sql_comments" value="true"/>
<!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
</properties>
</persistence-unit>
</persistence>
- DB 방언 : SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 언어? 기능? 이라고 볼 수 있다.
각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 차이가 난다.
ex 1) 가변 문자 : MySQL - VARCHAR / Oracle - VARCHAR2
ex 2) 문자열 자르는 함수 : SQL표준 - SUBSTRING() / Oracle - SUBSTR()
ex 3) 페이징 : MySQL - LIMIT / Oracle - ROWNUM