JPA, Maven으로 Project 생성하기

    이번 포스팅에서는 JPA에서 Maven으로 Project를 생성하는 방법에 대해서 공부하고자 한다.

     

    1. 인텔리제이에서 프로젝트를 생성하기


    프로젝트 생성을 한 후, Maven에서 Project SDK를 선택해준다. 나는 JAVA11이 깔려있는데, corretto-11 버전을 선택했다. 그리고 아래에 있는 Next를 클릭 후 다음 화면으로 넘어간다.

    다음으로 넘어오면 저장 경로, 저장명, 그리고 그룹명과 아티팩트 명을 설정할 수 있다. 필요한 경로 및 파일명 등을 설정한 후 Finish를 눌러주면 프로젝트 생성은 완료된다. 

     

    2. pom.xml 설정하기


     

    인텔리제이에서 pom.xml을 설정해야한다. pom.xml은 스프링으로 치면 gradle과 비슷하게 이해하면 될 것 같다(정확하지는 않음). pom.xml에 의존관계 주입을 해야하는데, JPA에서 주로 사용하는 하이버네이트에 대한 의존관계를 주입해준다. 아래 코드를 복사해서 pom.xml에 넣어두면 된다. 

        <dependencies>
            <!-- JPA 하이버네이트 -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId>
                <version>5.4.13.Final</version>
            </dependency>
            <!-- H2 데이터베이스 -->
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.200</version>
            </dependency>
    
    
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.0</version>
            </dependency>
        </dependencies>

     

    3. Persistence.xml 파일 설정하기


    JPA를 띄우기 위해서는 설정을 파일을 넣어줘야한다. 이런 설정 파일을 persistence.xml이라고 한다고 한다. 이 파일은 지정된 디렉토리에 저장이 되어야 한다. src/main/resource에 META-INF 디렉토리를 만들고, persistence.xml 파일을 생성한다. 

    <?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>

    위의 코드를 persistence.xml에 붙여넣어주면 된다. 위의 필수 속성은 주로 사용하고 있는 H2 DB와 관련된 값들이다. 어떤 드라이버를 사용하는지, ID / PW를 입력해주는 것과 url을 설정해주는 것이다. 

    그리고 중요한 부분은 hibernate.dialect라는 부분이다. 이 부분은 방언을 설정하는 부분이라고 한다. 다양한 DB가 있는데, DB마다 같은 쿼리를 하더라도 다양한 형태로 하는 경우가 있다고 한다. 예를 들어 경상도에서 잠온다라고 하는 것과 서울에서 졸리다라고 하는 느낌이다.

    여튼 JPA는 이런 것들을 감안하기 위해 hibernate.dialect에 어떤 DB의 방언을 사용할지를 이 단계에서 설정한다. 예를 들면 MYSQL은 VARCHAR()를 사용하는데, Oracle에서는 VARCHAR2()를 사용한다고 한다.

    그리고 아래에 보면 hibernate.hbm2ddl.auto 라는 내용이 있는데, 여기 value 값에 따라서 JPA를 시작할 때 DB에 있는 테이블의 생사여부가 결정된다. 현재 값은 create로 되어있는데, 이 값의 의미는 시작할 때 DB에 테이블이 있으면 그걸 삭제하고 테이블을 다시 만든다. 

    댓글

    Designed by JB FACTORY