JPA

프로젝트 생성

coding-orange 2023. 12. 29. 22:29
728x90

01. H2 데이터베이스 설치 & 실행

 

 

H2 소개

최고의 실습용 DB로, 가볍고, 웹용 쿼리툴을 제공한다. MySQL, Oracle 데이터베이스 시뮬레이션, 시퀀스, AUTO INCREMENT 등의 기능을 제공한다.

 




H2 설치
https://www.h2database.com/html/main.html 에서 [Download] 탭 - [Archive Downloads] 에서 원하는 버전으로 다운 받으면 된다. (나는 2.1.214 버전을 다운 받았다.)

 

 




02. Maven

 

 

Maven 소개

소프트웨어 프로젝트 관리 및 이해 도구로, 프로젝트 개체 모델(POM)의 개념을 기반으로 Maven은 중앙 정보에서 프로젝트의 빌드, 보고 및 문서를 관리할 수 있다.
  • 자바 라이브러리로, 빌드를 관리한다.
  • 라이브러리를 자동 다운로드하고, 의존성을 관리한다.
  • 최근에는 Gradle이 유명해지고 있는 추세이다.

 

 


 

 


03. 프로젝트 생성

 

자바 : 자바 8 이상 (8을 권장했지만 나는 11을 사용했다.)
Maven 설정 : groupId 는 jpa-basic, artifactId 는 ex1-hello-jpa 로 했다.





라이브러리 추가 - pom.xml

  • pom.xml 파일에 다음과 같은 코드를 넣는다.
  • H2 데이터베이스의 version 은 위에서 설치한 H2 데이터베이스와 버전을 일치시킨다. 
  • 추가한 부분이라고 작성한 두 부분은 내가 자바 11 버전을 사용해서 그런지 오류가 발생하여 구글링해서 오류를 해결하기 위해 넣은 코드이다. (https://www.inflearn.com/questions/13985/java11-javax-xml-bind-jaxbexception-%EC%97%90%EB%9F%AC 를 참고하였다.)

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>jpa-basic</groupId>
    <artifactId>ex1-hello-jpa</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <!-- JPA 하이버네이트 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.10.Final</version>
        </dependency>
        <!-- H2 데이터베이스 -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.1.214</version>
        </dependency>
<!-- 추가한 부분1 -->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
    </dependencies>

<!-- 추가한 부분2 -->
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
</project>

 




JPA 설정하기 - persistence.xml

  • persistence.xml은 JPA 설정 파일이다.
  • 반드시 resources/META-INF 하위에 존재해야 한다.

  • persistence-unit name 으로 이름을 지정하며 이것을 이용해 DB에 접근한다. (여기서는 hello로 지정했다.)
  • javax.persistence 로 시작하면 JPA 표준 속성으로, 구현체를 바꿔도 그대로 사용 가능하며, hibernate 로 시작하면 하이버네이트 전용 속성으로 구현체를 바꾸면 해당 부분도 바꿔야 한다.



<?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">
    <persistence-unit name="hello">
        <properties>
            <!-- 필수 속성 -->
            <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"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
            <!-- 옵션 -->
            <property name="hibernate.show_sql" value="true"/>
            <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>

 

 

 

 





04. 데이터베이스 방언

 

 

JPA는 특정 데이터베이스에 종속되지 않는다.

 



각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다.

  • 가변 문자의 경우, MySQL은 VARCHAR, Oracle은 VARCHAR2 이다.
  • 문자열 자르는 함수의 경우, SQL 표준은 SUBSTRING(), Oracle은 SUBSTR() 이다.
  • 페이징의 경우, MySQL은 LIMIT, Oracle은 ROWNUM 이다.

 


방언

  • 방언이란 SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능이다.
  • JPA는 Dialect를 사용한다. MySQL DB를 사용하고 싶으면 MySQLDialect를, Oracle DB를 사용하고 싶으면 OracleDialect를, H2를 사용하고 싶으면 H2Dialect를 사용하면 된다.
  • hibernate.dialect 속성에 방언을 지정하면 된다.
  • hibernate는 40가지 이상의 데이터베이스 방언을 지원한다.

 

 


 

 



프로젝트 생성 시 추가적인 오류가 발생한다면, 자신이 사용하는 자바 버전이 모두 동일하게 설정되었는지 확인해야 한다.





728x90