3.4. オプション設定プロパティ

3.4. オプション設定プロパティ

これらのプロパティはランタイムに Hibernate の挙動を制御するものです。これらのプロパティはすべて妥当なデフォルト値があり、任意で設定します。

注意:これらのプロパティは「システムレベル」のみです。 システムレベルプロパティは java -Dproperty=value 、もしくは hibernate.properties でのみ設定可能です。それ以外の設定方法は ありません

プロパティ名 意味
hibernate.dialect Hibernate のクラス名 Dialect が入ります。これはリレーショナルデータベースごとに最適化された SQL を生成します。

full.classname.of.Dialect

hibernate.show_sql 発行されたすべての SQL をコンソールに出力します。これはログカテゴリの org.hibernate.SQLdebug を設定する方法の代替手段です。

true | false

hibernate.format_sql ログとコンソールの SQL を整形して表示します。

true | false

hibernate.default_schema 生成される SQL 文のテーブルに設定するスキーマ/テーブルスペースです。

例.SCHEMA_NAME

hibernate.default_catalog 生成される SQL 文のテーブルに設定するカタログです。

CATALOG_NAME

hibernate.session_factory_name SessionFactory は生成後、この名前で JNDI に自動的に登録されます。

jndi/composite/name

hibernate.max_fetch_depth 外部結合フェッチの最大深度を設定します。結合する関連は対一関連のみ(一対一、多対一)です。 0 を指定すると外部結合フェッチは無効になります。

例: 推奨する値は 0 から 3 の間です。

hibernate.default_batch_fetch_size 関連フェッチのデフォルト Hibernate バッチサイズを指定します。

例: 推奨する値は 4 , 8 , 16 です。

hibernate.default_entity_mode SessionFactory からセッションをオープンしたときに使用するエンティティのデフォルトモードを設定します。

dynamic-map, dom4j, pojo

hibernate.order_updates 項目が更新されたときに、別の SQL で主キーを更新することを強制します。この場合、同時実行可能なシステムでは、まれにデッドロックが発生する可能性があります。

true | false

hibernate.generate_statistics 有効の場合、 Hibernate はパフォーマンスチューニングに有効な統計情報を収集します。

true | false

hibernate.use_identifer_rollback 有効の場合、オブジェクトが削除されたときに識別子プロパティをリセットし、デフォルト値にしたものを生成します。

true | false

hibernate.use_sql_comments 有効の場合、 SQL 内にコメントを生成します。これはデバックを容易にします。デフォルトの値は false です。

true | false

表 3.3. Hibernate 設定プロパティ


プロパティ名 意味
hibernate.jdbc.fetch_size 値が0でない場合、 JDBC フェッチサイズを決定します ( Statement.setFetchSize() を呼びます)。
hibernate.jdbc.batch_size 値が0でない場合、 Hibernate が JDBC2 バッチ更新を使用します。

例: 推奨する値は 5 から 30 の間です。

hibernate.jdbc.batch_versioned_data もし JDBC ドライバが executeBatch() によって正確な行数を返す場合、このプロパティを true にしてください (通常はこのオプションを ON するのが安全です)。 Hibernate は、自動バージョンデータのためバッチ DML を使います。デフォルトの値は false です。

true | false

hibernate.jdbc.factory_class カスタム Batcher を選びます。ほとんどのアプリケーションに、この設定プロパティは必要ありません。

classname.of.Batcher

hibernate.jdbc.use_scrollable_resultset Hibernate による JDBC2 のスクロール可能なリザルトセットの使用を有効にします。このプロパティは、ユーザーによって提供された JDBC コネクションを使用している場合のみ必要で、そうでなければ Hibernate はコネクションメタデータを使用します。

true | false

hibernate.jdbc.use_streams_for_binary JDBC へ/から binaryserializable の書き込み/読み込みストリームを使います (システムレベルのプロパティ)。

true | false

hibernate.jdbc.use_get_generated_keys 挿入の後に自動生成された主キーを取得するための JDBC3 PreparedStatement.getGeneratedKeys() の使用を有効にします。これは JDBC3+ ドライバと JRE1.4+ を必要とし、もし Hibernate の識別子ジェネレータに問題が発生するようなら false に設定してください。デフォルトではコネクションメタデータを使いドライバの能力を決定します。

true|false

hibernate.connection.provider_class JDBC コネクションを Hibernate に提供する独自の ConnectionProvider のクラス名。

classname.of.ConnectionProvider

hibernate.connection.isolation JDBC トランザクション分離レベルを設定します。妥当な値を調べるためには java.sql.Connection をチェックしてください。しかし使用するデータベースが、すべての分離レベルをサポートしているとは限りません。

1, 2, 4, 8

hibernate.connection.autocommit プールされている JDBC コネクションの自動コミットを有効にする(非推奨)。

true | false

hibernate.connection.release_mode Hibernate がいつ JDBC コネクションをリリースするかを指定します。デフォルトではセッションが明示的にクローズまたは切断されてもコネクションは保持します。アプリケーションサーバーの JTA データソースの場合、すべての JDBC コールの後、強制的にコネクションをリリースするために after_statement を使ってください。非 JTA コネクションの場合、各トランザクションが終了したときに after_transaction を使い、コネクションをリリースしてください。 auto にすると、 JTA や CMT トランザクションの場合、 after_statement でクローズし、 JDBC トランザクションの場合、 after_transaction でクローズします。

auto (デフォルト) | on_close | after_transaction | after_statement

この設定は SessionFactory.openSession から取得した Session だけに効果があります。 SessionFactory.getCurrentSession を通じて取得した Session では、 CurrentSessionContext の実装によって、コネクションのリリースモードを設定します。 項2.5. 「コンテキスト上のセッション」 を参照してください。

hibernate.connection.<propertyName> JDBC プロパティ propertyNameDriverManager.getConnection() に渡します。
hibernate.jndi.<propertyName> プロパティ propertyName を JNDI InitialContextFactory に渡します。

表 3.4. Hibernate JDBC とコネクションプロパティ


プロパティ名 意味
hibernate.cache.provider_class カスタム CacheProvider のクラス名です。

classname.of.CacheProvider

hibernate.cache.use_minimal_puts 書き込みを最小限にするために、二次キャッシュの操作を最適化します。その代わりに、読み込みがより頻繁に発生するようになります。このセッティングはクラスタキャッシュで役に立ちます。 Hibernate3 ではクラスタキャッシュ実装用にデフォルトでは有効になっています。

true|false

hibernate.cache.use_query_cache 特定のクエリがキャッシュ可能な場合に、クエリキャッシュを有効にします。

true|false

hibernate.cache.use_second_level_cache 二次キャッシュを完全に無効にする場合に使います。デフォルトでは有効で、クラスの <cache> マッピングで制御します。

true|false

hibernate.cache.query_cache_factory カスタム QueryCache インターフェースのクラス名を指定します。デフォルトでは StandardQueryCache になります。

classname.of.QueryCache

hibernate.cache.region_prefix 二次キャッシュの領域名の接頭辞です。

prefix

hibernate.cache.use_structured_entries 二次キャッシュに格納するデータを、人が理解しやすいフォーマットにします。

true|false

表 3.5. Hibernate キャッシュプロパティ


プロパティ名 意味
hibernate.transaction.factory_class Hibernate Transaction API と一緒に使われる TransactionFactory のクラス名です。 (デフォルトでは JDBCTransactionFactory です)。

classname.of.TransactionFactory >

jta.UserTransaction アプリケーションサーバーから JTA UserTransaction を取得するために JTATransactionFactory に使われる JNDI 名です。

jndi/composite/name

hibernate.transaction.manager_lookup_class TransactionManagerLookup のクラス名です。 JTA 環境において、 JVM レベルのキャッシュを有効にするときか、 hilo ジェネレータが使用されるときに必要です。

classname.of.TransactionManagerLookup

hibernate.transaction.flush_before_completion 有効の場合、トランザクションの completion フェーズの前に自動的にセッションをフラッシュします。内蔵の自動セッションコンテキスト管理に適しています。 項2.5. 「コンテキスト上のセッション」 を参照してください。

true | false

hibernate.transaction.auto_close_session 有効の場合、トランザクションの completion フェーズの後にセッションを自動的にクローズします。内蔵の自動セッションコンテキスト管理に適しています。 項2.5. 「コンテキスト上のセッション」 を参照してください。

true | false

表 3.6. Hibernate トランザクションプロパティ


プロパティ名 意味
hibernate.current_session_context_class 「現在の」 Session のための(カスタム)戦略を提供します。ビルトインストラテジーに関するその他の情報については 項2.5. 「コンテキスト上のセッション」 を参照してください。

jta | thread | managed | custom.Class

hibernate.query.factory_class HQL パーサーの実装を選択します。

org.hibernate.hql.ast.ASTQueryTranslatorFactory or org.hibernate.hql.classic.ClassicQueryTranslatorFactory

hibernate.query.substitutions HQL と SQL のトークンをマッピングします。 (例えば、トークンは関数やリテラル名です)。

hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

hibernate.hbm2ddl.auto SessionFactory を生成したときに、自動的にスキーマ DDL を有効にしデータベースに出力します。 create-drop の場合、 SessionFactory をクローズしたときに、データベーススキーマをドロップします。

validate | update | create | create-drop

hibernate.cglib.use_reflection_optimizer 実行時リフレクションの代わりの CGLIB の使用を有効にします (システムレベルのプロパティ) 。リフレクションはトラブルシューティングのときに役立つことがあります。オプティマイザをオフにしているときでさえ、 Hibernate には必ず CGLIB が必要なことに注意してください。このプロパティは hibernate.cfg.xml で設定できません。

true | false

表 3.7. その他のプロパティ