これらのプロパティはランタイムに Hibernate の挙動を制御するものです。これらのプロパティはすべて妥当なデフォルト値があり、任意で設定します。
注意:これらのプロパティは「システムレベル」のみです。 システムレベルプロパティは java -Dproperty=value 、もしくは hibernate.properties でのみ設定可能です。それ以外の設定方法は ありません 。
| プロパティ名 | 意味 |
|---|---|
hibernate.dialect
|
Hibernate のクラス名 Dialect が入ります。これはリレーショナルデータベースごとに最適化された SQL を生成します。
例 |
hibernate.show_sql
|
発行されたすべての SQL をコンソールに出力します。これはログカテゴリの org.hibernate.SQL に debug を設定する方法の代替手段です。
|
hibernate.format_sql
|
ログとコンソールの SQL を整形して表示します。
|
hibernate.default_schema
|
生成される SQL 文のテーブルに設定するスキーマ/テーブルスペースです。
例. |
hibernate.default_catalog
|
生成される SQL 文のテーブルに設定するカタログです。
例 |
hibernate.session_factory_name
|
SessionFactory は生成後、この名前で JNDI に自動的に登録されます。
例 |
hibernate.max_fetch_depth
|
外部結合フェッチの最大深度を設定します。結合する関連は対一関連のみ(一対一、多対一)です。 0 を指定すると外部結合フェッチは無効になります。
例: 推奨する値は |
hibernate.default_batch_fetch_size
|
関連フェッチのデフォルト Hibernate バッチサイズを指定します。
例: 推奨する値は |
hibernate.default_entity_mode
|
SessionFactory からセッションをオープンしたときに使用するエンティティのデフォルトモードを設定します。
|
hibernate.order_updates
|
項目が更新されたときに、別の SQL で主キーを更新することを強制します。この場合、同時実行可能なシステムでは、まれにデッドロックが発生する可能性があります。
|
hibernate.generate_statistics
|
有効の場合、 Hibernate はパフォーマンスチューニングに有効な統計情報を収集します。
|
hibernate.use_identifer_rollback
|
有効の場合、オブジェクトが削除されたときに識別子プロパティをリセットし、デフォルト値にしたものを生成します。
|
hibernate.use_sql_comments
|
有効の場合、 SQL 内にコメントを生成します。これはデバックを容易にします。デフォルトの値は false です。
|
表 3.3. Hibernate 設定プロパティ
| プロパティ名 | 意味 |
|---|---|
hibernate.jdbc.fetch_size
|
値が0でない場合、 JDBC フェッチサイズを決定します ( Statement.setFetchSize() を呼びます)。
|
hibernate.jdbc.batch_size
|
値が0でない場合、 Hibernate が JDBC2 バッチ更新を使用します。
例: 推奨する値は |
hibernate.jdbc.batch_versioned_data
|
もし JDBC ドライバが executeBatch() によって正確な行数を返す場合、このプロパティを true にしてください (通常はこのオプションを ON するのが安全です)。 Hibernate は、自動バージョンデータのためバッチ DML を使います。デフォルトの値は false です。
|
hibernate.jdbc.factory_class
|
カスタム Batcher を選びます。ほとんどのアプリケーションに、この設定プロパティは必要ありません。
例 |
hibernate.jdbc.use_scrollable_resultset
|
Hibernate による JDBC2 のスクロール可能なリザルトセットの使用を有効にします。このプロパティは、ユーザーによって提供された JDBC コネクションを使用している場合のみ必要で、そうでなければ Hibernate はコネクションメタデータを使用します。
|
hibernate.jdbc.use_streams_for_binary
|
JDBC へ/から binary や serializable の書き込み/読み込みストリームを使います (システムレベルのプロパティ)。
|
hibernate.jdbc.use_get_generated_keys
|
挿入の後に自動生成された主キーを取得するための JDBC3 PreparedStatement.getGeneratedKeys() の使用を有効にします。これは JDBC3+ ドライバと JRE1.4+ を必要とし、もし Hibernate の識別子ジェネレータに問題が発生するようなら false に設定してください。デフォルトではコネクションメタデータを使いドライバの能力を決定します。
例 |
hibernate.connection.provider_class
|
JDBC コネクションを Hibernate に提供する独自の ConnectionProvider のクラス名。
例 |
hibernate.connection.isolation
|
JDBC トランザクション分離レベルを設定します。妥当な値を調べるためには java.sql.Connection をチェックしてください。しかし使用するデータベースが、すべての分離レベルをサポートしているとは限りません。
例 |
hibernate.connection.autocommit
|
プールされている JDBC コネクションの自動コミットを有効にする(非推奨)。
|
hibernate.connection.release_mode
|
Hibernate がいつ JDBC コネクションをリリースするかを指定します。デフォルトではセッションが明示的にクローズまたは切断されてもコネクションは保持します。アプリケーションサーバーの JTA データソースの場合、すべての JDBC コールの後、強制的にコネクションをリリースするために after_statement を使ってください。非 JTA コネクションの場合、各トランザクションが終了したときに after_transaction を使い、コネクションをリリースしてください。 auto にすると、 JTA や CMT トランザクションの場合、 after_statement でクローズし、 JDBC トランザクションの場合、 after_transaction でクローズします。
例
この設定は |
hibernate.connection.<propertyName>
|
JDBC プロパティ propertyName を DriverManager.getConnection() に渡します。
|
hibernate.jndi.<propertyName>
|
プロパティ propertyName を JNDI InitialContextFactory に渡します。
|
表 3.4. Hibernate JDBC とコネクションプロパティ
| プロパティ名 | 意味 |
|---|---|
hibernate.cache.provider_class
|
カスタム CacheProvider のクラス名です。
例 |
hibernate.cache.use_minimal_puts
|
書き込みを最小限にするために、二次キャッシュの操作を最適化します。その代わりに、読み込みがより頻繁に発生するようになります。このセッティングはクラスタキャッシュで役に立ちます。 Hibernate3 ではクラスタキャッシュ実装用にデフォルトでは有効になっています。
例 |
hibernate.cache.use_query_cache
|
特定のクエリがキャッシュ可能な場合に、クエリキャッシュを有効にします。
例 |
hibernate.cache.use_second_level_cache
|
二次キャッシュを完全に無効にする場合に使います。デフォルトでは有効で、クラスの <cache> マッピングで制御します。
例 |
hibernate.cache.query_cache_factory
|
カスタム QueryCache インターフェースのクラス名を指定します。デフォルトでは StandardQueryCache になります。
例 |
hibernate.cache.region_prefix
|
二次キャッシュの領域名の接頭辞です。
|
hibernate.cache.use_structured_entries
|
二次キャッシュに格納するデータを、人が理解しやすいフォーマットにします。
例 |
表 3.5. Hibernate キャッシュプロパティ
| プロパティ名 | 意味 |
|---|---|
hibernate.transaction.factory_class
|
Hibernate Transaction API と一緒に使われる TransactionFactory のクラス名です。 (デフォルトでは JDBCTransactionFactory です)。
例 |
jta.UserTransaction
|
アプリケーションサーバーから JTA UserTransaction を取得するために JTATransactionFactory に使われる JNDI 名です。
例 |
hibernate.transaction.manager_lookup_class
|
TransactionManagerLookup のクラス名です。 JTA 環境において、 JVM レベルのキャッシュを有効にするときか、 hilo ジェネレータが使用されるときに必要です。
例 |
hibernate.transaction.flush_before_completion
|
有効の場合、トランザクションの completion フェーズの前に自動的にセッションをフラッシュします。内蔵の自動セッションコンテキスト管理に適しています。 項2.5. 「コンテキスト上のセッション」 を参照してください。
|
hibernate.transaction.auto_close_session
|
有効の場合、トランザクションの completion フェーズの後にセッションを自動的にクローズします。内蔵の自動セッションコンテキスト管理に適しています。 項2.5. 「コンテキスト上のセッション」 を参照してください。
|
表 3.6. Hibernate トランザクションプロパティ
| プロパティ名 | 意味 |
|---|---|
hibernate.current_session_context_class
|
「現在の」 Session のための(カスタム)戦略を提供します。ビルトインストラテジーに関するその他の情報については 項2.5. 「コンテキスト上のセッション」 を参照してください。
例 |
hibernate.query.factory_class
|
HQL パーサーの実装を選択します。
例 |
hibernate.query.substitutions
|
HQL と SQL のトークンをマッピングします。 (例えば、トークンは関数やリテラル名です)。
例 |
hibernate.hbm2ddl.auto
|
SessionFactory を生成したときに、自動的にスキーマ DDL を有効にしデータベースに出力します。 create-drop の場合、 SessionFactory をクローズしたときに、データベーススキーマをドロップします。
例 |
hibernate.cglib.use_reflection_optimizer
|
実行時リフレクションの代わりの CGLIB の使用を有効にします (システムレベルのプロパティ) 。リフレクションはトラブルシューティングのときに役立つことがあります。オプティマイザをオフにしているときでさえ、 Hibernate には必ず CGLIB が必要なことに注意してください。このプロパティは hibernate.cfg.xml で設定できません。
|
表 3.7. その他のプロパティ