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>マッピング要素を使って、
関連に対し生成された外部キー制約の名前を指定します。
SchemaExport は inverse="true" 側を考慮しないことに注意してください。
sql-type
SQLのカラム型
デフォルトのカラム型をオーバーライドします( <column> 要素の属性のみ)
default
SQL式
カラムのデフォルト値を指定します
check
SQL式
カラムかテーブルにSQLのチェック制約を作成します
<comment> 要素で生成するスキーマにコメントを指定することができます。
Current customers only
...
]]>
Balance in USD
]]>
これにより、生成したDDLに comment on table や comment on column 文が書かれます。
ツールの実行
SchemaExport は標準出力に対してDDLスクリプトを書き出し、DDL文を実行したりもします。
java -cp hibernate_classpaths
org.hibernate.tool.hbm2ddl.SchemaExport options mapping_files
SchemaExport Command Line Options
SchemaExport のコマンドラインオプション
オプション
説明
--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
SchemaUpdate のコマンドライン・オプション
オプション
説明
--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
SchemaValidator のコマンドライン・オプション
オプション
説明
--naming=eg.MyNamingStrategy
NamingStrategy を選択します
--properties=hibernate.properties
ファイルからデータベースのプロパティを読み込みます
--config=hibernate.cfg.xml
.cfg.xml ファイルを指定します
SchemaValidator をアプリケーションに組み込むことが出来ます:
スキーマのバリデーションにAntを使用します
Antスクリプトから SchemaValidator を呼び出せます:
]]>