Provides access to configuration info passed in
objects.
if it exists. System
properties override properties specified in
.
| property | meaning |
| hibernate.dialect |
classname of org.hibernate.dialect.Dialect subclass |
| hibernate.cache.provider_class |
classname of org.hibernate.cache.CacheProvider
subclass (if not specified EHCache is used) |
| hibernate.connection.provider_class |
classname of org.hibernate.connection.ConnectionProvider
subclass (if not specified hueristics are used) |
| hibernate.connection.username | database username |
| hibernate.connection.password | database password |
| hibernate.connection.url |
JDBC URL (when using java.sql.DriverManager) |
| hibernate.connection.driver_class |
classname of JDBC driver |
| hibernate.connection.isolation |
JDBC transaction isolation level (only when using
java.sql.DriverManager)
|
hibernate.connection.pool_size |
the maximum size of the connection pool (only when using
java.sql.DriverManager)
|
| hibernate.connection.datasource |
databasource JNDI name (when using javax.sql.Datasource) |
| hibernate.jndi.url | JNDI InitialContext URL |
| hibernate.jndi.class | JNDI InitialContext classname |
| hibernate.max_fetch_depth |
maximum depth of outer join fetching |
| hibernate.jdbc.batch_size |
enable use of JDBC2 batch API for drivers which support it |
| hibernate.jdbc.fetch_size |
set the JDBC fetch size |
| hibernate.jdbc.use_scrollable_resultset |
enable use of JDBC2 scrollable resultsets (you only need this specify
this property when using user supplied connections) |
| hibernate.jdbc.use_getGeneratedKeys |
enable use of JDBC3 PreparedStatement.getGeneratedKeys() to retrieve
natively generated keys after insert. Requires JDBC3+ driver and JRE1.4+ |
| hibernate.hbm2ddl.auto |
enable auto DDL export |
| hibernate.default_schema |
use given schema name for unqualified tables (always optional) |
| hibernate.default_catalog |
use given catalog name for unqualified tables (always optional) |
| hibernate.session_factory_name |
If set, the factory attempts to bind this name to itself in the
JNDI context. This name is also used to support cross JVM
Session (de)serialization. |
| hibernate.transaction.manager_lookup_class |
classname of org.hibernate.transaction.TransactionManagerLookup
implementor |
| hibernate.transaction.factory_class |
the factory to use for instantiating Transactions.
(Defaults to JDBCTransactionFactory.) |
| hibernate.query.substitutions | query language token substitutions |
| Field Summary |
|---|
| public static final String | VERSION | |
| public static final String | CONNECTION_PROVIDER | ConnectionProvider implementor to use when obtaining connections |
| public static final String | DRIVER | JDBC driver class |
| public static final String | ISOLATION | JDBC transaction isolation level |
| public static final String | URL | JDBC URL |
| public static final String | USER | JDBC user |
| public static final String | PASS | JDBC password |
| public static final String | AUTOCOMMIT | JDBC autocommit mode |
| public static final String | POOL_SIZE | Maximum number of inactive connections for Hibernate's connection pool |
| public static final String | DATASOURCE | java.sql.Datasource JNDI name |
| public static final String | CONNECTION_PREFIX | prefix for arbitrary JDBC connection properties |
| public static final String | JNDI_CLASS | JNDI initial context class, Context.INITIAL_CONTEXT_FACTORY |
| public static final String | JNDI_URL | JNDI provider URL, Context.PROVIDER_URL |
| public static final String | JNDI_PREFIX | prefix for arbitrary JNDI InitialContext properties |
| public static final String | SESSION_FACTORY_NAME | JNDI name to bind to SessionFactory |
| public static final String | DIALECT | Hibernate SQL Dialect class |
| public static final String | DEFAULT_SCHEMA | A default database schema (owner) name to use for unqualified tablenames |
| public static final String | DEFAULT_CATALOG | A default database catalog name to use for unqualified tablenames |
| public static final String | SHOW_SQL | Enable logging of generated SQL to the console |
| public static final String | FORMAT_SQL | Enable formatting of SQL logged to the console |
| public static final String | USE_SQL_COMMENTS | Add comments to the generated SQL |
| public static final String | MAX_FETCH_DEPTH | Maximum depth of outer join fetching |
| public static final String | DEFAULT_BATCH_FETCH_SIZE | The default batch size for batch fetching |
| public static final String | USE_STREAMS_FOR_BINARY | Use java.io streams to read / write binary data from / to JDBC |
| public static final String | USE_SCROLLABLE_RESULTSET | Use JDBC scrollable ResultSets. This property is only necessary when there is
no ConnectionProvider, ie. the user is supplying JDBC connections. |
| public static final String | USE_GET_GENERATED_KEYS | Tells the JDBC driver to attempt to retrieve row Id with the JDBC 3.0 PreparedStatement.getGeneratedKeys()
method. In general, performance will be better if this property is set to true and the underlying
JDBC driver supports getGeneratedKeys(). |
| public static final String | STATEMENT_FETCH_SIZE | Gives the JDBC driver a hint as to the number of rows that should be fetched from the database
when more rows are needed. If 0, JDBC driver default settings will be used. |
| public static final String | STATEMENT_BATCH_SIZE | Maximum JDBC batch size. A nonzero value enables batch updates. |
| public static final String | BATCH_STRATEGY | Select a custom batcher. |
| public static final String | BATCH_VERSIONED_DATA | Should versioned data be included in batching? |
| public static final String | OUTPUT_STYLESHEET | An XSLT resource used to generate "custom" XML |
| public static final String | C3P0_MAX_SIZE | Maximum size of C3P0 connection pool |
| public static final String | C3P0_MIN_SIZE | Minimum size of C3P0 connection pool |
| public static final String | C3P0_TIMEOUT | Maximum idle time for C3P0 connection pool |
| public static final String | C3P0_MAX_STATEMENTS | Maximum size of C3P0 statement cache |
| public static final String | C3P0_ACQUIRE_INCREMENT | Number of connections acquired when pool is exhausted |
| public static final String | C3P0_IDLE_TEST_PERIOD | Idle time before a C3P0 pooled connection is validated |
| public static final String | PROXOOL_PREFIX | Proxool/Hibernate property prefix |
| public static final String | PROXOOL_XML | Proxool property to configure the Proxool Provider using an XML (/path/to/file.xml) |
| public static final String | PROXOOL_PROPERTIES | Proxool property to configure the Proxool Provider using a properties file (/path/to/proxool.properties) |
| public static final String | PROXOOL_EXISTING_POOL | Proxool property to configure the Proxool Provider from an already existing pool (true / false) |
| public static final String | PROXOOL_POOL_ALIAS | Proxool property with the Proxool pool alias to use
(Required for PROXOOL_EXISTING_POOL, PROXOOL_PROPERTIES, or
PROXOOL_XML) |
| public static final String | AUTO_CLOSE_SESSION | Enable automatic session close at end of transaction |
| public static final String | FLUSH_BEFORE_COMPLETION | Enable automatic flush during the JTA beforeCompletion() callback |
| public static final String | RELEASE_CONNECTIONS | Specifies how Hibernate should release JDBC connections. |
| public static final String | CURRENT_SESSION_CONTEXT_CLASS | Context scoping impl for org.hibernate.SessionFactory#getCurrentSession() processing. |
| public static final String | TRANSACTION_STRATEGY | TransactionFactory implementor to use for creating Transactions |
| public static final String | TRANSACTION_MANAGER_STRATEGY | TransactionManagerLookup implementor to use for obtaining the TransactionManager |
| public static final String | USER_TRANSACTION | JNDI name of JTA UserTransaction object |
| public static final String | CACHE_PROVIDER | The CacheProvider implementation class |
| public static final String | CACHE_REGION_FACTORY | The org.hibernate.cache.RegionFactory implementation class |
| public static final String | CACHE_PROVIDER_CONFIG | The CacheProvider implementation class |
| public static final String | CACHE_NAMESPACE | The CacheProvider JNDI namespace, if pre-bound to JNDI. |
| public static final String | USE_QUERY_CACHE | Enable the query cache (disabled by default) |
| public static final String | QUERY_CACHE_FACTORY | The QueryCacheFactory implementation class. |
| public static final String | USE_SECOND_LEVEL_CACHE | Enable the second-level cache (enabled by default) |
| public static final String | USE_MINIMAL_PUTS | Optimize the cache for mimimal puts instead of minimal gets |
| public static final String | CACHE_REGION_PREFIX | The CacheProvider region name prefix |
| public static final String | USE_STRUCTURED_CACHE | Enable use of structured second-level cache entries |
| public static final String | GENERATE_STATISTICS | Enable statistics collection |
| public static final String | USE_IDENTIFIER_ROLLBACK | |
| public static final String | USE_REFLECTION_OPTIMIZER | Use bytecode libraries optimized property access |
| public static final String | QUERY_TRANSLATOR | The classname of the HQL query parser factory |
| public static final String | QUERY_SUBSTITUTIONS | A comma-seperated list of token substitutions to use when translating a Hibernate
query to SQL |
| public static final String | QUERY_STARTUP_CHECKING | Should named queries be checked during startup (the default is enabled).
Mainly intended for test environments. |
| public static final String | HBM2DDL_AUTO | Auto export/update schema using hbm2ddl tool. Valid values are update,
create, create-drop and validate. |
| public static final String | SQL_EXCEPTION_CONVERTER | The org.hibernate.exception.SQLExceptionConverter to use for converting SQLExceptions
to Hibernate's JDBCException hierarchy. The default is to use the configured
org.hibernate.dialect.Dialect 's preferred SQLExceptionConverter. |
| public static final String | WRAP_RESULT_SETS | Enable wrapping of JDBC result sets in order to speed up column name lookups for
broken JDBC drivers |
| public static final String | ORDER_UPDATES | Enable ordering of update statements by primary key value |
| public static final String | ORDER_INSERTS | Enable ordering of insert statements for the purpose of more effecient JDBC batching. |
| public static final String | DEFAULT_ENTITY_MODE | The EntityMode in which set the Session opened from the SessionFactory. |
| public static final String | JACC_CONTEXTID | The jacc context id of the deployment |
| public static final String | BYTECODE_PROVIDER | |
| public static final String | JPAQL_STRICT_COMPLIANCE | |
| Method from org.hibernate.cfg.Environment Summary: |
|---|
|
buildBytecodeProvider, getBytecodeProvider, getProperties, isolationLevelToString, jvmHasJDK14Timestamp, jvmHasTimestampBug, jvmSupportsGetGeneratedKeys, jvmSupportsLinkedHashCollections, useReflectionOptimizer, useStreamsForBinary, verifyProperties |
| Method from org.hibernate.cfg.Environment Detail: |
public static BytecodeProvider buildBytecodeProvider(Properties properties) {
String provider = PropertiesHelper.getString( BYTECODE_PROVIDER, properties, "javassist" );
log.info( "Bytecode provider name : " + provider );
return buildBytecodeProvider( provider );
}
|
public static BytecodeProvider getBytecodeProvider() {
log.info("Hibernate " + VERSION);
RENAMED_PROPERTIES.put( "hibernate.cglib.use_reflection_optimizer", USE_REFLECTION_OPTIMIZER );
ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_NONE), "NONE" );
ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_READ_UNCOMMITTED), "READ_UNCOMMITTED" );
ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_READ_COMMITTED), "READ_COMMITTED" );
ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_REPEATABLE_READ), "REPEATABLE_READ" );
ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_SERIALIZABLE), "SERIALIZABLE" );
GLOBAL_PROPERTIES = new Properties();
//Set USE_REFLECTION_OPTIMIZER to false to fix HHH-227
GLOBAL_PROPERTIES.setProperty( USE_REFLECTION_OPTIMIZER, Boolean.FALSE.toString() );
try {
InputStream stream = ConfigHelper.getResourceAsStream("/hibernate.properties");
try {
GLOBAL_PROPERTIES.load(stream);
log.info( "loaded properties from resource hibernate.properties: " + PropertiesHelper.maskOut(GLOBAL_PROPERTIES, PASS) );
}
catch (Exception e) {
log.error("problem loading properties from hibernate.properties");
}
finally {
try{
stream.close();
}
catch (IOException ioe){
log.error("could not close stream on hibernate.properties", ioe);
}
}
}
catch (HibernateException he) {
log.info("hibernate.properties not found");
}
try {
GLOBAL_PROPERTIES.putAll( System.getProperties() );
}
catch (SecurityException se) {
log.warn("could not copy system properties, system properties will be ignored");
}
verifyProperties(GLOBAL_PROPERTIES);
ENABLE_BINARY_STREAMS = PropertiesHelper.getBoolean(USE_STREAMS_FOR_BINARY, GLOBAL_PROPERTIES);
ENABLE_REFLECTION_OPTIMIZER = PropertiesHelper.getBoolean(USE_REFLECTION_OPTIMIZER, GLOBAL_PROPERTIES);
if (ENABLE_BINARY_STREAMS) {
log.info("using java.io streams to persist binary types");
}
if (ENABLE_REFLECTION_OPTIMIZER) {
log.info("using bytecode reflection optimizer");
}
BYTECODE_PROVIDER_INSTANCE = buildBytecodeProvider( GLOBAL_PROPERTIES );
boolean getGeneratedKeysSupport;
try {
Statement.class.getMethod("getGeneratedKeys", null);
getGeneratedKeysSupport = true;
}
catch (NoSuchMethodException nsme) {
getGeneratedKeysSupport = false;
}
JVM_SUPPORTS_GET_GENERATED_KEYS = getGeneratedKeysSupport;
if (!JVM_SUPPORTS_GET_GENERATED_KEYS) log.info("JVM does not support Statement.getGeneratedKeys()");
boolean linkedHashSupport;
try {
Class.forName("java.util.LinkedHashSet");
linkedHashSupport = true;
}
catch (ClassNotFoundException cnfe) {
linkedHashSupport = false;
}
JVM_SUPPORTS_LINKED_HASH_COLLECTIONS = linkedHashSupport;
if (!JVM_SUPPORTS_LINKED_HASH_COLLECTIONS) log.info("JVM does not support LinkedHasMap, LinkedHashSet - ordered maps and sets disabled");
JVM_HAS_TIMESTAMP_BUG = new Timestamp(123456789).getTime() != 123456789;
if (JVM_HAS_TIMESTAMP_BUG) log.info("using workaround for JVM bug in java.sql.Timestamp");
Timestamp t = new Timestamp(0);
t.setNanos(5 * 1000000);
JVM_HAS_JDK14_TIMESTAMP = t.getTime() == 5;
if (JVM_HAS_JDK14_TIMESTAMP) {
log.info("using JDK 1.4 java.sql.Timestamp handling");
}
else {
log.info("using pre JDK 1.4 java.sql.Timestamp handling");
}
return BYTECODE_PROVIDER_INSTANCE;
}
|
public static Properties getProperties() {
Properties copy = new Properties();
copy.putAll(GLOBAL_PROPERTIES);
return copy;
}
Return System properties, extended by any properties specified
in hibernate.properties. |
public static String isolationLevelToString(int isolation) {
return (String) ISOLATION_LEVELS.get( new Integer(isolation) );
}
Get the name of a JDBC transaction isolation level |
public static boolean jvmHasJDK14Timestamp() {
return JVM_HAS_JDK14_TIMESTAMP;
}
Does this JVM handle Timestamp in the JDK 1.4 compliant way? |
public static boolean jvmHasTimestampBug() {
return JVM_HAS_TIMESTAMP_BUG;
}
Does this JVM have the IBM JDK 1.3.1. The bug is new Timestamp(x).getTime()!=x. |
public static boolean jvmSupportsGetGeneratedKeys() {
return JVM_SUPPORTS_GET_GENERATED_KEYS;
}
|
public static boolean jvmSupportsLinkedHashCollections() {
return JVM_SUPPORTS_LINKED_HASH_COLLECTIONS;
}
Does this JVM support LinkedHashSet, LinkedHashMap. |
public static boolean useReflectionOptimizer() {
return ENABLE_REFLECTION_OPTIMIZER;
}
Should we use CGLIB reflection optimizer.
Property hibernate.jdbc.use_refection_optimizer. |
public static boolean useStreamsForBinary() {
return ENABLE_BINARY_STREAMS;
}
Should we use streams to bind binary types to JDBC IN parameters.
Property hibernate.jdbc.use_streams_for_binary. |
public static void verifyProperties(Properties props) {
Iterator iter = props.keySet().iterator();
Map propertiesToAdd = new HashMap();
while ( iter.hasNext() ) {
final Object propertyName = iter.next();
Object newPropertyName = OBSOLETE_PROPERTIES.get( propertyName );
if ( newPropertyName != null ) {
log.warn( "Usage of obsolete property: " + propertyName + " no longer supported, use: " + newPropertyName );
}
newPropertyName = RENAMED_PROPERTIES.get( propertyName );
if ( newPropertyName != null ) {
log.warn( "Property [" + propertyName + "] has been renamed to [" + newPropertyName + "]; update your properties appropriately" );
if ( ! props.containsKey( newPropertyName ) ) {
propertiesToAdd.put( newPropertyName, props.get( propertyName ) );
}
}
}
props.putAll(propertiesToAdd);
}
Issues warnings to the user when any obsolete property names are used. |