Hello JPA - 프로젝트 생성

h2 데이터베이스

Untitled

Untitled

H2 설치 후 실행

데이터베이스 파일 생성 방법

**jdbc:h2:~/jpatest (최소 한번)**

**~/jpatest.mv.db 파일 생성 확인**

이후 부터는 **jdbc:h2:tcp://localhost/~/jpatest** 이렇게 접속

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>jpabasic</groupId>
    <artifactId>ex1-hello-jpa</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <!-- JPA 하이버네이트 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.6.15.Final</version>
        </dependency>

        <!-- H2 데이터베이스 -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.2.224</version>
        </dependency>

    </dependencies>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

/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>
• JPA 설정 파일

• /META-INF/persistence.xml 위치

• persistence-unit name으로 이름 지정

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

• hibernate로 시작: 하이버네이트 전용 속성

데이터베이스 방언

• JPA는 특정 데이터베이스에 종속 X 

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

	가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2 

	문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR() 

	페이징: MySQL은 LIMIT , Oracle은 ROWNUM 

• 방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능

Untitled

• hibernate.dialect 속성에 지정

	H2 : org.hibernate.dialect.H2Dialect 

	Oracle 10g : org.hibernate.dialect.Oracle10gDialect 

	MySQL : org.hibernate.dialect.MySQL5InnoDBDialect 

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

Hello JPA - 애플리케이션 개발

JPA 구동 방식

Untitled

JPA 동작 확인