Hibernateの使い方を変える

5256 ワード

ソース:
http://yangfei520.blog.51cto.com/1041581/269302
以前はHibernateを使用するのは最も愚かな方法でした:まずエンティティクラスを書いて、それからSQL文あるいはPLSQL Developerツールの中でデータベース関連のテーブルを創立して、更にプロファイルとマッピングファイルを書きます.....
この方法は時間と労力がかかり、クラス、パッケージ、属性名が対応していないなどの問題もよく発生します.実はこれもJavaが提唱しているオブジェクト向けの開発思想ではありません.
オブジェクト向けモデル設計に強制的に移行します.エンティティクラスを書き、プロファイルとマッピングファイルを書き、Hibernateで提供された
hbm 2 ddlツール
SchemaExportクラスは、エンティティークラス、プロファイル、マッピングファイルに基づいて対応するデータベース構造を生成します.この写真はこのプログラミング思想をより簡単に表現できるかもしれません.
转变Hibernate的使用方式
 
 
Hibernateのhbm 2 dll提供
SchemaExport
ツールの役割は、接続文字列とマッピングファイルを指定し、他のものを入力することなく、永続化クラスとマッピングファイルに基づいてデータベースアーキテクチャを自動的に生成することです.実は、
SchemaExport
3つの方法で、データベース構造の操作を完了できます.
    public void 
create(boolean script, boolean export),
    public void 
drop(boolean script, boolean export),
    public void 
execute(boolean script, boolean export, boolean justDrop, boolean justCreate)
    
Create(script,export)メソッドは、永続クラスとマッピングファイルに基づいてアーキテクチャを削除した後、削除データベースアーキテクチャを作成します.2つのパラメータがあり、1つ目はTrueでDDL文をコンソールに出力し、2つ目はTrueで永続クラスとマッピングファイルに基づいて削除を実行してから作成操作を実行し、デバッグした結果、この方法は実質的にExecute(script,export,false,true)を実行する方法であることが分かった.
    
Drop(script,export)メソッドは、永続クラスとマッピングファイルに基づいてデータベースアーキテクチャの削除を実行します.2つのパラメータがあり、1つ目はTrueでDDL文をコンソールに出力し、2つ目はTrueで永続クラスとマッピングファイルに基づいてデータベースアーキテクチャの削除操作を実行し、デバッグするとDrop(script,export)メソッドは実質的にExecute(script,export,true)メソッドを実行していることがわかります.
    
Execute(script,export,justDrop,format)メソッドは、永続クラスとマッピングファイルに基づいてアーキテクチャを削除した後、削除データベースアーキテクチャを作成します.4つのパラメータがあり、1つ目はTrueでDDL文をコンソールに出力します.2つ目はTrueです.永続クラスとマッピングファイルに基づいてデータベースで削除してから作成操作を実行します.3つ目はfalseであり、Drop文だけでなく作成操作も実行されることを示しており、このパラメータの違いは上記の2つの方法を拡張しています.4番目のパラメータはfalseで、DDL文をコンソールにフォーマット出力するのではなく、1行で出力することを示します.
1.エンティティークラス:Studio.java
public class Student { 
  private String id; 
  private String name; 
  private String password; 
  private Date createTime; 
  private Date expireTime; 
  //   setter.getter   
}
 
2.プロファイル:hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC 
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
  <session-factory> 
    <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:test</property> 
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
    <property name="hibernate.connection.username">SCOTT</property> 
    <property name="hibernate.connection.password">yf123</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property> 
    <property name="hibernate.show_sql">true</property> 
     
    <mapping resource="com/yf/hibernate/Student.hbm.xml"/> 
  </session-factory> 
</hibernate-configuration>

 
3.マッピングファイル:Studio.hbm.xml
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC    
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
  <class name="com.yf.hibernate.Student" table="hibernate_student"> 

    <id name="id" length="6"> 
      <generator class="uuid"/> 
    </id> 
    <property name="name" length="10"/> 
    <property name="password" length="8"/> 
    <property name="createTime"/> 
    <property name="expireTime"/> 
  </class> 
</hibernate-mapping>

 
4.SchemaExportツールによるHibernateのデータベース構造の自動生成
import org.hibernate.cfg.Configuration; 
import org.hibernate.tool.hbm2ddl.SchemaExport; 

public class ExportDB { 
  public static void main(String[] args) { 
    //   hibernate.cfg.xml   
    Configuration cfg = new Configuration().configure(); 
    SchemaExport export = new SchemaExport(cfg); 
    export.create(true, true);//    True   DDL        ,    True                        
  } 
}

 
実行結果:
转变Hibernate的使用方式