天天看點

Hibernate 參數總彙

1、Hibernate JDBC屬性

屬性名

用途

hibernate.connection.driver_class

jdbc驅動類

hibernate.connection.url

jdbc URL

hibernate.connection.username

資料庫使用者

hibernate.connection.password

資料庫使用者密碼

hibernate.connection.pool_size

連接配接池容量上限數目

注:使用C3P0的properties樣例代碼:

hibernate.connection.driver_class = org.postgresql.Driver

hibernate.connection.url = jdbc:postgresql://localhost/mydatabase

hibernate.connection.username = myuser

hibernate.connection.password = secret

hibernate.c3p0.min_size=5

hibernate.c3p0.max_size=20

hibernate.c3p0.timeout=1800

hibernate.c3p0.max_statements=50

hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

2、Hibernate的資料源屬性

hibernate.connection.datasource

資料源JNDI名字

hibernate.jndi.url

JNDI提供者的URL (可選)

hibernate.jndi.class

JNDI InitialContextFactory類 (可選)

資料庫使用者 (可選)

資料庫使用者密碼 (可選)

注:應用程式伺服器JNDI資料源的hibernate.properties樣例代碼:

hibernate.connection.datasource = java:/comp/env/jdbc/test

hibernate.transaction.factory_class = /

    org.hibernate.transaction.JTATransactionFactory

hibernate.transaction.manager_lookup_class = /

    org.hibernate.transaction.JBossTransactionManagerLookup

3、Hibernate配置屬性(可選)

hibernate.dialect

一個Hibernate Dialect類名允許Hibernate針對特定的關系資料庫生成優化的SQL.

取值full.classname.of.Dialect

hibernate.show_sql

輸出所有SQL語句到控制台.

取值true | false

hibernate.format_sql

在log和console中列印出更漂亮的sql.

hibernate.default_schema

在生成的SQL中, 将給定的schema/tablespace附加于非全限定名的表名上.

取值SCHEMA_NAME

hibernate.default_catalog

在生成的SQL中, 将給定的catalog附加于沒全限定名的表名上.

取值CATALOG_NAME

hibernate.session_factory_name

SessionFactory建立後,将自動使用這個名字綁定到JNDI中.

取值jndi/composite/name

hibernate.max_fetch_depth

為單向關聯(一對一, 多對一)的外連接配接抓取(outer join fetch)樹設定最大深度. 值為0意味着将關閉預設的外連接配接抓取.

取值 建議在0到3之間取值

hibernate.default_batch_fetch_size

為Hibernate關聯的批量抓取設定預設數量.

取值 建議的取值為4, 8, 和16

hibernate.default_entity_mode

為由這個SessionFactory打開的所有Session指定預設的實體表現模式.

取值dynamic-map, dom4j, pojo

hibernate.order_updates

強制Hibernate按照被更新資料的主鍵,為SQL更新排序。這麼做将減少在高并發系統中事務的死鎖。

hibernate.generate_statistics

如果開啟, Hibernate将收集有助于性能調節的統計資料.

hibernate.use_identifer_rollback

如果開啟, 在對象被删除時生成的辨別屬性将被重設為預設值.

hibernate.use_sql_comments

如果開啟, Hibernate将在SQL中生成有助于調試的注釋資訊, 預設值為false.

4、Hibernate JDBC和連接配接(connection)屬性

hibernate.jdbc.fetch_size

非零值,指定JDBC抓取數量的大小 (調用Statement.setFetchSize()).

hibernate.jdbc.batch_size

非零值,允許Hibernate使用JDBC2的批量更新.

取值 建議取5到30之間的值

hibernate.jdbc.batch_versioned_data

如果你想讓你的JDBC驅動從executeBatch()傳回正确的行計數 , 那麼将此屬性設為true(開啟這個選項通常是安全的). 同時,Hibernate将為自動版本化的資料使用批量DML. 預設值為false.

eg.true | false

hibernate.jdbc.factory_class

選擇一個自定義的Batcher. 多數應用程式不需要這個配置屬性.

eg.classname.of.Batcher

hibernate.jdbc.use_scrollable_resultset

允許Hibernate使用JDBC2的可滾動結果集. 隻有在使用使用者提供的JDBC連接配接時,這個選項才是必要的, 否則Hibernate會使用連接配接的中繼資料.

hibernate.jdbc.use_streams_for_binary

在JDBC讀寫binary (二進制)或serializable (可序列化) 的類型時使用流(stream)(系統級屬性).

hibernate.jdbc.use_get_generated_keys

在資料插入資料庫之後,允許使用JDBC3 PreparedStatement.getGeneratedKeys() 來擷取資料庫生成的key(鍵)。需要JDBC3+驅動和JRE1.4+, 如果你的資料庫驅動在使用Hibernate的标 識生成器時遇到問題,請将此值設為false. 預設情況下将使用連接配接的中繼資料來判定驅動的能力.

取值true|false

hibernate.connection.provider_class

自定義ConnectionProvider的類名, 此類用來向Hibernate提供JDBC連接配接.

取值classname.of.ConnectionProvider

hibernate.connection.isolation

設定JDBC事務隔離級别. 檢視java.sql.Connection來了解各個值的具體意義, 但請注意多數資料庫都不支援所有的隔離級别.

取值1, 2, 4, 8

hibernate.connection.autocommit

允許被緩存的JDBC連接配接開啟自動送出(autocommit) (不建議).

hibernate.connection.release_mode

指定Hibernate在何時釋放JDBC連接配接. 預設情況下,直到Session被顯式關閉或被斷開連接配接時,才會釋放JDBC連接配接. 對于應用程式伺服器的JTA資料源, 你應當使用after_statement, 這樣在每次JDBC調用後,都會主動的釋放連接配接. 對于非JTA的連接配接, 使用after_transaction在每個事務結束時釋放連接配接是合理的. auto将為JTA和CMT事務政策選擇after_statement, 為JDBC事務政策選擇after_transaction.

取值on_close | after_transaction | after_statement | auto

hibernate.connection.<propertyName>

将JDBC屬性propertyName傳遞到DriverManager.getConnection()中去.

hibernate.jndi.<propertyName>

将屬性propertyName傳遞到JNDI InitialContextFactory中去.

5、Hibernate緩存屬性

hibernate.cache.provider_class

自定義的CacheProvider的類名.

取值classname.of.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.

取值classname.of.QueryCache

hibernate.cache.region_prefix

二級緩存區域名的字首.

取值prefix

hibernate.cache.use_structured_entries

強制Hibernate以更人性化的格式将資料存入二級緩存.

6、Hibernate事務屬性

hibernate.transaction.factory_class

一個TransactionFactory的類名, 用于Hibernate Transaction API (預設為JDBCTransactionFactory).

取值classname.of.TransactionFactory

jta.UserTransaction

一個JNDI名字,被JTATransactionFactory用來從應用伺服器擷取JTA UserTransaction.

hibernate.transaction.manager_lookup_class

一個TransactionManagerLookup的類名 - 當使用JVM級緩存,或在JTA環境中使用hilo生成器的時候需要該類.

取值classname.of.TransactionManagerLookup

hibernate.transaction.flush_before_completion

如果開啟, session在事務完成後将被自動清洗(flush). (在Hibernate和CMT一起使用時很有用.)

hibernate.transaction.auto_close_session

如果開啟, session在事務完成前将被自動關閉. (在Hibernate和CMT一起使用時很有用.)

7、其他屬性

hibernate.query.factory_class

選擇HQL解析器的實作.

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

hibernate.query.substitutions

将Hibernate查詢中的符号映射到SQL查詢中的符号 (符号可能是函數名或常量名字).

取值hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

hibernate.hbm2ddl.auto

在SessionFactory建立時,自動将資料庫schema的DDL導出到資料庫. 使用 create-drop時,在顯式關閉SessionFactory時,将drop掉資料庫schema.

取值update | create | create-drop

hibernate.cglib.use_reflection_optimizer

開啟CGLIB來替代運作時反射機制(系統級屬性). 反射機制有時在除錯時比較有用. 注意即使關閉這個優化, Hibernate還是需要CGLIB. 你不能在hibernate.cfg.xml中設定此屬性.

8、SQL方言

   Hibernate SQL方言 (hibernate.dialect)

RDBMS

方言

DB2

org.hibernate.dialect.DB2Dialect

DB2 AS/400

org.hibernate.dialect.DB2400Dialect

DB2 OS390

org.hibernate.dialect.DB2390Dialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

MySQL

org.hibernate.dialect.MySQLDialect

MySQL with InnoDB

org.hibernate.dialect.MySQLInnoDBDialect

MySQL with MyISAM

org.hibernate.dialect.MySQLMyISAMDialect

Oracle (any version)

org.hibernate.dialect.OracleDialect

Oracle 9i/10g

org.hibernate.dialect.Oracle9Dialect

Sybase

org.hibernate.dialect.SybaseDialect

Sybase Anywhere

org.hibernate.dialect.SybaseAnywhereDialect

Microsoft SQL Server

org.hibernate.dialect.SQLServerDialect

SAP DB

org.hibernate.dialect.SAPDBDialect

Informix

org.hibernate.dialect.InformixDialect

HypersonicSQL

org.hibernate.dialect.HSQLDialect

Ingres

org.hibernate.dialect.IngresDialect

Progress

org.hibernate.dialect.ProgressDialect

Mckoi SQL

org.hibernate.dialect.MckoiDialect

Interbase

org.hibernate.dialect.InterbaseDialect

Pointbase

org.hibernate.dialect.PointbaseDialect

FrontBase

org.hibernate.dialect.FrontbaseDialect

Firebird

org.hibernate.dialect.FirebirdDialect

9、Hibernate日志類别

類别

功能

org.hibernate.SQL

在所有SQL DML語句被執行時為它們記錄日志

org.hibernate.type

為所有JDBC參數記錄日志

org.hibernate.tool.hbm2ddl

在所有SQL DDL語句執行時為它們記錄日志

org.hibernate.pretty

在session清洗(flush)時,為所有與其關聯的實體(最多20個)的狀态記錄日志

org.hibernate.cache

為所有二級緩存的活動記錄日志

org.hibernate.transaction

為事務相關的活動記錄日志

org.hibernate.jdbc

為所有JDBC資源的擷取記錄日志

org.hibernate.hql.ast

為HQL和SQL的自動狀态轉換和其他關于查詢解析的資訊記錄日志

org.hibernate.secure

為JAAS認證請求做日志

org.hibernate

為任何Hibernate相關資訊做日志 (資訊量較大, 但對查錯非常有幫助)