Hello JPA-プロジェクトの作成



リファレンス
  • 金英漢インフラ講座-Java ORM標準JPAプログラミング-基本編
  • Java ORM標準JPAプログラミング
  • H 2データベースのインストールと実行

  • http://www.h2database.com/
  • ベスト実習データベース
  • 楽.(1.5M)
  • Webクエリーツールの提供
  • MySQL、Oracleデータベースシミュレーション機能
  • シーケンス、AUTO INCREMENT機能サポート
  • 紹介する

  • https://maven.apache.org/
  • Javaライブラリ、バージョン管理
  • 自動ダウンロードと依存性管理
  • 最近のグリップがますます有名になってきた
  • プロジェクトの作成

  • ジャワ8以上(推奨17)
  • オーブン設置
  • グループId:パッケージ名
  • artifactId: ex1-hello-jpa
  • version: 1.0.0
  • ライブラリ-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>me.sungbin</groupId>
        <artifactId>ex1-hello-jpa</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>17</maven.compiler.source>
            <maven.compiler.target>17</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId>
                <version>5.6.7.Final</version>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.200</version>
            </dependency>
        </dependencies>
    
    </project>

    JPA-Persistenceの設定xml

  • JPAプロファイル
  • resources/META-INF/persistence.xml位置
  • persistence-unitname命名::名前にしよう!
  • javax.persistenceから:JPA標準属性
  • hibernateから:Hypernet属性のみ
  • 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は特定データベースに依存してプロキシモードを使用しているか.
  • データベースごとにSQL構文と関数が若干異なる
  • 可変文字:MySQLはVARCHAR、OracleはVARCHAR 2
  • 文字列切り出し関数:SQL標準はSUBSTRANG()、OracleはSUBSTR()
  • ページング:MySQLはLIMIT、OracleはROWNUM
  • 方言:SQL規格に準拠していない特定データベース独自の機能
  • hibernate.方言プロパティでの指定
  • H2 : org.hibernate.dialect.H2Dialect
  • Oracle 10g : org.hibernate.dialect.Oracle10gDialect
  • MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
  • 海伯南特は40種類以上のデータベース方言をサポート