Toolset Guide ツールセットガイド Hibernateを使ったラウンドトリップエンジニアリングは、 Eclipseプラグインやコマンドラインツール、もちろんAntタスクを使うことで可能です。 Hibernate Tools は現在、既存データベースのリバースエンジニアリングのAntタスクに加えて、EclipseIDEのプラグインを含みます。 マッピングエディタ: HibernateのXMLマッピングファイル用のエディタで、 自動補完と構文強調表示をサポートしています。クラス名やプロパティ/フィールド名に対する自動補完もサポートし、 通常のXMLエディタよりも強力です。 Console: コンソールはエクリプスの新しいビューです。 コンソールコンフィギュレーションのツリーオーバービューに加えて、永続クラスとその関連の相互作用ビューも得られます。 データベースにHQLを実行し、結果を直接エクリプス上で見ることができます。 開発ウィザード HibernateのEclipseツールはいくつかのウィザードを提供します。 ウィザードを使ってHibernateの設定ファイル(cfg.xml)をすばやく生成したり、 既存のデータベーススキーマをPOJOのソースファイルとHibernateのマッピングファイルへと、 完全にリバースエンジニアリングすることができます。 リバースエンジニアリングウィザードはカスタマイズ可能なテンプレートをサポートします。 Ant Tasks: より詳しい情報は Hibernate Tools パッケージとそのドキュメントを参照してください。 しかし、Hibernateのメインパッケージは SchemaExport 、 別名 hbm2ddl も含みます(Hibernate内でオンザフライで使用できます)。 スキーマの自動生成 DDLはHibernateユーティリティによりマッピングファイルから生成することができます。 生成されたスキーマはエンティティやコレクションのテーブルに対する参照整合性制約(主キーと外部キー)を含みます。 テーブルとシーケンスはマッピングする識別子ジェネレータに対して生成されます。 DDLはベンダー依存なので、このツールを使うときは、hibernate.dialect プロパティでSQLの 方言 を指定 しなければなりません まず、生成されるスキーマを改善するように、マッピングファイルをカスタマイズしてください。 スキーマのカスタマイズ 多くのHibernateのマッピング要素では、オプションの length という名の属性を定義しています。 この属性でカラム長を設定することができます(またはNUMERIC/DECIMAL型のデータの精度を設定できます)。 not-null 属性(テーブルのカラムへ NOT NULL 制約を生成する)と unique 属性(テーブルのカラムへ UNIQUE 制約を生成する)が設定できるタグもあります。 ]]> ]]> unique-key 属性はカラムをグループ化して一つのキー制約にするために使われます。 現在、unique-key 属性で指定された値は制約の指定には 使われず 、 マッピングファイルでカラムをグループ化することにのみ使われます。 ]]> index 属性はマッピングするカラムを使って生成したインデックスの名前を指定します。 複数カラムを1つのインデックスにグループ化できます。単に、同じインデックス名を指定するだけです。 ]]> foreign-key 属性は、生成された外部キー制約の名前をオーバーライドするために使用できます。 ]]> 多くのマッピング要素は、子 <column> 要素を記述できます。これは複数カラム型のマッピングには特に有用です。 ]]> default 属性はカラムのデフォルト値を指定します (マッピングしたクラスの新しいインスタンスを保存する前に、 マッピングしたプロパティへ同じ値を代入すべきです)。 ]]> ]]> sql-type 属性で、デフォルトのHibernate型からSQLのデータ型へのマッピングをオーバーライドできます。 ]]> check 属性でチェック制約を指定することができます。 ]]> ... ]]> まとめ 属性 説明 length 数値 カラムの長さ precision 数値 カラムのDECIMAL型の精度(precision) scale 数値 カラムのDECIMAL型のスケール(scale) not-null true|false カラムがnull値を取らないことを指定します unique true|false カラムがユニーク制約を持つことを指定します index インデックス名 (複数カラムの)インデックスの名前を指定します unique-key ユニークキー名 複数カラムのユニーク制約の名前を指定します foreign-key 外部キー名 <one-to-one>、<many-to-one>、<many-to-many>マッピング要素を使って、 関連に対し生成された外部キー制約の名前を指定します。 SchemaExportinverse="true" 側を考慮しないことに注意してください。 sql-type SQLのカラム型 デフォルトのカラム型をオーバーライドします( <column> 要素の属性のみ) default SQL式 カラムのデフォルト値を指定します check SQL式 カラムかテーブルにSQLのチェック制約を作成します
<comment> 要素で生成するスキーマにコメントを指定することができます。 Current customers only ... ]]> Balance in USD ]]> これにより、生成したDDLに comment on tablecomment on column 文が書かれます。
ツールの実行 SchemaExport は標準出力に対してDDLスクリプトを書き出し、DDL文を実行したりもします。 java -cp hibernate_classpaths org.hibernate.tool.hbm2ddl.SchemaExport options mapping_files <literal>SchemaExport</literal> Command Line Options <literal>SchemaExport</literal> のコマンドラインオプション オプション 説明 --quiet スクリプトを標準出力に出力しません --drop テーブルの削除だけを行います --create テーブルの生成のみを行います。 --text データベースにエクスポートしません --output=my_schema.ddl DDLスクリプトをファイルに出力します --naming=eg.MyNamingStrategy NamingStrategy を選択します --config=hibernate.cfg.xml XMLファイルからHibernateの定義情報を読み込みます --properties=hibernate.properties ファイルからデータベースプロパティを読み込みます --format スクリプト内に生成するSQLを読みやすいようにフォーマットします --delimiter=x スクリプトの行区切り文字を設定します
アプリケーションに SchemaExport を組み込むこともできます:
プロパティ 次のように、データベースのプロパティを指定することができます。 -D <property> を使って、システムプロパティとして hibernate.properties ファイル内で --properties を使って指定したプロパティファイル内で 必要なプロパティは以下のものです: SchemaExportコネクションプロパティ プロパティ名 説明 hibernate.connection.driver_class jdbcのドライバークラス hibernate.connection.url jdbcのurl hibernate.connection.username データベースのユーザ hibernate.connection.password ユーザパスワード hibernate.dialect データベース方言
Antを使用する Antのビルドスクリプトから SchemaExport を呼び出すことができます。: ]]> インクリメンタルなスキーマ更新 SchemaUpdate ツールは既存のスキーマをインクリメンタルに更新します。 SchemaUpdate はJDBCのメタデータAPIに強く依存します。 そのため、すべてのJDBCドライバでうまくいくとは限らないことに注意してください。 java -cp hibernate_classpaths org.hibernate.tool.hbm2ddl.SchemaUpdate options mapping_files <literal>SchemaUpdate</literal> のコマンドライン・オプション オプション 説明 --quiet 標準出力にスクリプトを出力しません --text データベースにスクリプトをエクスポートしません --naming=eg.MyNamingStrategy NamingStrategy を選択します。 --properties=hibernate.properties ファイルからデータベースプロパティを読み込みます --config=hibernate.cfg.xml .cfg.xml ファイルを指定します
アプリケーションに SchemaUpdate を組み込むことができます。:
インクリメンタルなスキーマ更新に対するAntの使用 Antスクリプトから SchemaUpdate を呼び出すことができます: ]]> Schema validation SchemaValidator ツールは、既存のデータベーススキーマと作成したマッピングドキュメントが"一致する"ことを検証します。 SchemaValidator はJDBCのメタデータAPIに強く依存することに注意してください。そのため、すべてのJDBCドライバーで作動するものではありません。このツールはテスト時に非常に有用です。 java -cp hibernate_classpaths org.hibernate.tool.hbm2ddl.SchemaValidator options mapping_files <literal>SchemaValidator</literal> のコマンドライン・オプション オプション 説明 --naming=eg.MyNamingStrategy NamingStrategy を選択します --properties=hibernate.properties ファイルからデータベースのプロパティを読み込みます --config=hibernate.cfg.xml .cfg.xml ファイルを指定します
SchemaValidator をアプリケーションに組み込むことが出来ます:
スキーマのバリデーションにAntを使用します Antスクリプトから SchemaValidator を呼び出せます: ]]>