ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JPA] JPA 프로젝트 생성
    JPA 2023. 3. 14. 23:24

    공부일자 : 2023.03.14

    참조 : 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)

     

    사용툴 : intelliJ

    H2 데이터베이스 

    프로젝트를 메이븐으로 새로 생성한 후 pom.xml을 열어 라이브러리를 관리한다.

    <?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>
    
        </dependencies>
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
    </project>


    spring framework 와의 호환성을 생각하면서 JPA 버전을 관리하는 것이 좋으며,

    h2데이터베이스 꼭 다운받은 같은 버전으로 맞춰야 한다.

     

    이후 maven의 Dependencies에서 가져온 라이브러리들을 확인할 수 있다.

    javax.persistence~는, jpa가 인터페이스로 하이버네이트 구현체를 사용하는데 가장 핵심적인 부분이 담겨있는 라이브러리이다.

    * JPA 설정
    경로 : /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>


    * hibernate.dialect
    JPA는 특정데이터베이스에 종속되면 안된다.
    각각의 데이터베이스가 제공하는 sql 문법과 함수가 조금씩 다른데 JPA는 데이터베이가 바뀔 때마다 sql을 모두 바꿔야 하는 수고를 덜어준다.

    SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능(ex. 가변문자, 페이징 등등)
    데이터베이스의 종류에 따라 알아서 방언으로 바꾸어서 지원해준다.

    (h2데이터베이스를 사용하기 때문에 H2Dialect)


    javax로 시작하는 것은 하이버네이트 구현체가 아니어도 다 사용가능한 java 표준이고
    hibernate로 시작하는 것은 hibernate 전용 옵션이다.
    즉, 구현체가 달라지면 해당 설정은 바뀌어야 할 필요가 있다.

     

    'JPA' 카테고리의 다른 글

    [JPA] JPA 소개  (1) 2023.03.13
Designed by Tistory.