ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #JPA-2 프로젝트 생성 및 기본 설정
    JPA 2021. 2. 2. 22:51

    [출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본

    1. JPA 실습환경 구성

        <dependencies>
            <!-- JPA 하이버네이트 -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId> <!--안에 core, javax.persistence-api libarary가 포함되있다. hibernate가 jpa interface를 가지고있다. -->
                <version>5.3.10.Final</version>
            </dependency>
            <!--db를 접근 할 수 있는 driver-->
            <!-- H2 데이터베이스 -->
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.200</version><!--다운받은 버전이랑 같아야한다.-->
            </dependency>
        </dependencies>

     

     Spring boot와 사용할 hibernate version 맞추기

    해당 경로를 통해 spring boot에서 쓰는 hibernate의 버전을 알 수 있다.

     

     

    2.JPA 설정하기 - persistence.xml (만들어서 프로젝트에 넣기!)

    JPA 설정파일

    /MEMT-INF/persistence.xml 위치

    persistence-unit name으로 이름 지정

    javax.persistence로 시작 : JPA 표준속성

    hibernate로 시작 : hibernate 전용 속성

     

    3.데이터베이스 방언

    <?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"><!--JPA를 쓸건데 이름은 뭘쓸거야?-->
            <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"/>
                <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
                <!--hibernate.dialect DB방언<방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능> -JPA는 특정 DB에 종속 X MYSQL쓰다가 ORACLE 써도 바껴 있어야함.-->
                <!--각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름-->
                <!--가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2-->
                <!--문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR() -->
                <!--페이징: MySQL은 LIMIT , Oracle은 ROWNUM -->
    
                <!-- 옵션 -->
                <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 속성에 지정

    • H2 : org.hibernate.dialect.H2Dialect

    • Oracle 10g : org.hibernate.dialect.Oracle10gDialect

    • MySQL : org.hibernate.dialect.MySQL5InnoDBDialect

    • 하이버네이트는 40가지 이상의 데이터베이스 방언 지원

    • 하이버네이트 전용 옵션이다.

    댓글

Designed by Tistory.