BE/JPA

[JPA] 3. JPA 프로젝트 세팅

멍목 2022. 3. 26. 03:23
반응형

자바 ORM 표준 JPA 프로그래밍

 

이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다.

 

 

1. DataBase 설치

- H2 DataBase 사용

 

Oracle or MySQL 대신 H2 DataBase를 사용하는 이유????

- 실습에 최적화된 DB

- 가벼움(1.5MB)

- 웹용 쿼리 툴 제공

- Oracle, MySQL DB 시뮬레이션 가능

- Sequence, Auto Increment 기능 지원

 

 

설치 방법 

1) 아래의 페이지에서 자신의 플랫폼에 맞게 다운로드 진행.

https://www.h2database.com/ 

 

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 

src/main/resource 안에 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

 

 

 

반응형