Class Environment

java.lang.Object
org.hibernate.cfg.Environment

public final class Environment extends Object
Provides access to configuration info passed in Properties objects.

Hibernate has two property scopes:
  • Factory-level properties may be passed to the SessionFactory when it instantiated. Each instance might have different property values. If no properties are specified, the factory calls Environment.getProperties().
  • System-level properties are shared by all factory instances and are always determined by the Environment properties.
The only system-level properties are
  • hibernate.jdbc.use_streams_for_binary
  • hibernate.cglib.use_reflection_optimizer
Environment properties are populated by calling System.getProperties() and then from a resource named /hibernate.properties if it exists. System properties override properties specified in hibernate.properties.

The SessionFactory is controlled by the following properties. Properties may be either be System properties, properties defined in a resource named /hibernate.properties or an instance of java.util.Properties passed to Configuration.buildSessionFactory()

propertymeaning
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.usernamedatabase username
hibernate.connection.passworddatabase 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.urlJNDI InitialContext URL
hibernate.jndi.classJNDI 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.substitutionsquery language token substitutions
See Also:
  • Field Details

    • CONNECTION_PROVIDER

      public static final String CONNECTION_PROVIDER
      ConnectionProvider implementor to use when obtaining connections
      See Also:
    • DRIVER

      public static final String DRIVER
      JDBC driver class
      See Also:
    • ISOLATION

      public static final String ISOLATION
      JDBC transaction isolation level
      See Also:
    • URL

      public static final String URL
      JDBC URL
      See Also:
    • USER

      public static final String USER
      JDBC user
      See Also:
    • PASS

      public static final String PASS
      JDBC password
      See Also:
    • AUTOCOMMIT

      public static final String AUTOCOMMIT
      JDBC autocommit mode
      See Also:
    • POOL_SIZE

      public static final String POOL_SIZE
      Maximum number of inactive connections for Hibernate's connection pool
      See Also:
    • DATASOURCE

      public static final String DATASOURCE
      java.sql.Datasource JNDI name
      See Also:
    • CONNECTION_PREFIX

      public static final String CONNECTION_PREFIX
      prefix for arbitrary JDBC connection properties
      See Also:
    • JNDI_CLASS

      public static final String JNDI_CLASS
      JNDI initial context class, Context.INITIAL_CONTEXT_FACTORY
      See Also:
    • JNDI_URL

      public static final String JNDI_URL
      JNDI provider URL, Context.PROVIDER_URL
      See Also:
    • JNDI_PREFIX

      public static final String JNDI_PREFIX
      prefix for arbitrary JNDI InitialContext properties
      See Also:
    • SESSION_FACTORY_NAME

      public static final String SESSION_FACTORY_NAME
      JNDI name to bind to SessionFactory
      See Also:
    • DIALECT

      public static final String DIALECT
      Hibernate SQL Dialect class
      See Also:
    • DIALECT_RESOLVERS

      public static final String DIALECT_RESOLVERS
      DialectResolver classes to register with the DialectFactory
      See Also:
    • DEFAULT_SCHEMA

      public static final String DEFAULT_SCHEMA
      A default database schema (owner) name to use for unqualified tablenames
      See Also:
    • DEFAULT_CATALOG

      public static final String DEFAULT_CATALOG
      A default database catalog name to use for unqualified tablenames
      See Also:
    • SHOW_SQL

      public static final String SHOW_SQL
      Enable logging of generated SQL to the console
      See Also:
    • FORMAT_SQL

      public static final String FORMAT_SQL
      Enable formatting of SQL logged to the console
      See Also:
    • USE_SQL_COMMENTS

      public static final String USE_SQL_COMMENTS
      Add comments to the generated SQL
      See Also:
    • MAX_FETCH_DEPTH

      public static final String MAX_FETCH_DEPTH
      Maximum depth of outer join fetching
      See Also:
    • DEFAULT_BATCH_FETCH_SIZE

      public static final String DEFAULT_BATCH_FETCH_SIZE
      The default batch size for batch fetching
      See Also:
    • USE_STREAMS_FOR_BINARY

      public static final String USE_STREAMS_FOR_BINARY
      Use java.io streams to read / write binary data from / to JDBC
      See Also:
    • USE_SCROLLABLE_RESULTSET

      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.
      See Also:
    • USE_GET_GENERATED_KEYS

      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().
      See Also:
    • STATEMENT_FETCH_SIZE

      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.
      See Also:
    • STATEMENT_BATCH_SIZE

      public static final String STATEMENT_BATCH_SIZE
      Maximum JDBC batch size. A nonzero value enables batch updates.
      See Also:
    • BATCH_STRATEGY

      public static final String BATCH_STRATEGY
      Select a custom batcher.
      See Also:
    • BATCH_VERSIONED_DATA

      public static final String BATCH_VERSIONED_DATA
      Should versioned data be included in batching?
      See Also:
    • OUTPUT_STYLESHEET

      public static final String OUTPUT_STYLESHEET
      An XSLT resource used to generate "custom" XML
      See Also:
    • C3P0_MAX_SIZE

      public static final String C3P0_MAX_SIZE
      Maximum size of C3P0 connection pool
      See Also:
    • C3P0_MIN_SIZE

      public static final String C3P0_MIN_SIZE
      Minimum size of C3P0 connection pool
      See Also:
    • C3P0_TIMEOUT

      public static final String C3P0_TIMEOUT
      Maximum idle time for C3P0 connection pool
      See Also:
    • C3P0_MAX_STATEMENTS

      public static final String C3P0_MAX_STATEMENTS
      Maximum size of C3P0 statement cache
      See Also:
    • C3P0_ACQUIRE_INCREMENT

      public static final String C3P0_ACQUIRE_INCREMENT
      Number of connections acquired when pool is exhausted
      See Also:
    • C3P0_IDLE_TEST_PERIOD

      public static final String C3P0_IDLE_TEST_PERIOD
      Idle time before a C3P0 pooled connection is validated
      See Also:
    • PROXOOL_PREFIX

      public static final String PROXOOL_PREFIX
      Proxool/Hibernate property prefix
      See Also:
    • PROXOOL_XML

      public static final String PROXOOL_XML
      Proxool property to configure the Proxool Provider using an XML (/path/to/file.xml)
      See Also:
    • PROXOOL_PROPERTIES

      public static final String PROXOOL_PROPERTIES
      Proxool property to configure the Proxool Provider using a properties file (/path/to/proxool.properties)
      See Also:
    • PROXOOL_EXISTING_POOL

      public static final String PROXOOL_EXISTING_POOL
      Proxool property to configure the Proxool Provider from an already existing pool (true / false)
      See Also:
    • PROXOOL_POOL_ALIAS

      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)
      See Also:
    • AUTO_CLOSE_SESSION

      public static final String AUTO_CLOSE_SESSION
      Enable automatic session close at end of transaction
      See Also:
    • FLUSH_BEFORE_COMPLETION

      public static final String FLUSH_BEFORE_COMPLETION
      Enable automatic flush during the JTA beforeCompletion() callback
      See Also:
    • RELEASE_CONNECTIONS

      public static final String RELEASE_CONNECTIONS
      Specifies how Hibernate should release JDBC connections.
      See Also:
    • CURRENT_SESSION_CONTEXT_CLASS

      public static final String CURRENT_SESSION_CONTEXT_CLASS
      Context scoping impl for SessionFactory.getCurrentSession() processing.
      See Also:
    • TRANSACTION_STRATEGY

      public static final String TRANSACTION_STRATEGY
      TransactionFactory implementor to use for creating Transactions
      See Also:
    • DEFAULT_TRANSACTION_STRATEGY

      public static final String DEFAULT_TRANSACTION_STRATEGY
      If none is explicitly set, default TransactionFactory implementor to use for creating Transactions
      See Also:
    • TRANSACTION_MANAGER_STRATEGY

      public static final String TRANSACTION_MANAGER_STRATEGY
      TransactionManagerLookup implementor to use for obtaining the TransactionManager
      See Also:
    • DEFAULT_TRANSACTION_MANAGER_STRATEGY

      public static final String DEFAULT_TRANSACTION_MANAGER_STRATEGY
      If none is explicitly set, default TransactionManagerLookup implementor to use for obtaining the TransactionManager
      See Also:
    • USER_TRANSACTION

      public static final String USER_TRANSACTION
      JNDI name of JTA UserTransaction object
      See Also:
    • CACHE_PROVIDER

      public static final String CACHE_PROVIDER
      The CacheProvider implementation class
      See Also:
    • CACHE_REGION_FACTORY

      public static final String CACHE_REGION_FACTORY
      The RegionFactory implementation class
      See Also:
    • CACHE_PROVIDER_CONFIG

      public static final String CACHE_PROVIDER_CONFIG
      The CacheProvider implementation class
      See Also:
    • CACHE_NAMESPACE

      public static final String CACHE_NAMESPACE
      The CacheProvider JNDI namespace, if pre-bound to JNDI.
      See Also:
    • USE_QUERY_CACHE

      public static final String USE_QUERY_CACHE
      Enable the query cache (disabled by default)
      See Also:
    • QUERY_CACHE_FACTORY

      public static final String QUERY_CACHE_FACTORY
      The QueryCacheFactory implementation class.
      See Also:
    • USE_SECOND_LEVEL_CACHE

      public static final String USE_SECOND_LEVEL_CACHE
      Enable the second-level cache (enabled by default)
      See Also:
    • USE_MINIMAL_PUTS

      public static final String USE_MINIMAL_PUTS
      Optimize the cache for minimal puts instead of minimal gets
      See Also:
    • CACHE_REGION_PREFIX

      public static final String CACHE_REGION_PREFIX
      The CacheProvider region name prefix
      See Also:
    • USE_STRUCTURED_CACHE

      public static final String USE_STRUCTURED_CACHE
      Enable use of structured second-level cache entries
      See Also:
    • GENERATE_STATISTICS

      public static final String GENERATE_STATISTICS
      Enable statistics collection
      See Also:
    • USE_IDENTIFIER_ROLLBACK

      public static final String USE_IDENTIFIER_ROLLBACK
      See Also:
    • USE_REFLECTION_OPTIMIZER

      public static final String USE_REFLECTION_OPTIMIZER
      Use bytecode libraries optimized property access
      See Also:
    • QUERY_TRANSLATOR

      public static final String QUERY_TRANSLATOR
      The classname of the HQL query parser factory
      See Also:
    • QUERY_SUBSTITUTIONS

      public static final String QUERY_SUBSTITUTIONS
      A comma-separated list of token substitutions to use when translating a Hibernate query to SQL
      See Also:
    • QUERY_STARTUP_CHECKING

      public static final String QUERY_STARTUP_CHECKING
      Should named queries be checked during startup (the default is enabled).

      Mainly intended for test environments.

      See Also:
    • HBM2DDL_AUTO

      public static final String HBM2DDL_AUTO
      Auto export/update schema using hbm2ddl tool. Valid values are update, create, create-drop and validate.
      See Also:
    • HBM2DDL_IMPORT_FILES

      public static final String HBM2DDL_IMPORT_FILES
      Comma-separated names of the optional files containing SQL DML statements executed during the SessionFactory creation. File order matters, the statements of a give file are executed before the statements of the following files. These statements are only executed if the schema is created ie if hibernate.hbm2ddl.auto is set to create or create-drop. The default value is /import.sql
      See Also:
    • SQL_EXCEPTION_CONVERTER

      public static final String SQL_EXCEPTION_CONVERTER
      The SQLExceptionConverter to use for converting SQLExceptions to Hibernate's JDBCException hierarchy. The default is to use the configured Dialect's preferred SQLExceptionConverter.
      See Also:
    • WRAP_RESULT_SETS

      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
      See Also:
    • ORDER_UPDATES

      public static final String ORDER_UPDATES
      Enable ordering of update statements by primary key value
      See Also:
    • ORDER_INSERTS

      public static final String ORDER_INSERTS
      Enable ordering of insert statements for the purpose of more efficient JDBC batching.
      See Also:
    • DEFAULT_ENTITY_MODE

      public static final String DEFAULT_ENTITY_MODE
      The EntityMode in which set the Session opened from the SessionFactory.
      See Also:
    • JACC_CONTEXTID

      public static final String JACC_CONTEXTID
      The jacc context id of the deployment
      See Also:
    • GLOBALLY_QUOTED_IDENTIFIERS

      public static final String GLOBALLY_QUOTED_IDENTIFIERS
      Should all database identifiers be quoted.
      See Also:
    • CHECK_NULLABILITY

      public static final String CHECK_NULLABILITY
      Enable nullability checking. Raises an exception if a property marked as not-null is null. Default to false if Bean Validation is present in the classpath and Hibernate Annotations is used, true otherwise.
      See Also:
    • BYTECODE_PROVIDER

      public static final String BYTECODE_PROVIDER
      See Also:
    • JPAQL_STRICT_COMPLIANCE

      public static final String JPAQL_STRICT_COMPLIANCE
      See Also:
    • PREFER_POOLED_VALUES_LO

      public static final String PREFER_POOLED_VALUES_LO
      When using pooled optimizers, prefer interpreting the database value as the lower (lo) boundary. The default is to interpret it as the high boundary.
      See Also:
    • QUERY_PLAN_CACHE_MAX_STRONG_REFERENCES

      public static final String QUERY_PLAN_CACHE_MAX_STRONG_REFERENCES
      The maximum number of strong references maintained by SoftLimitMRUCache. Default is 128.
      See Also:
    • QUERY_PLAN_CACHE_MAX_SOFT_REFERENCES

      public static final String QUERY_PLAN_CACHE_MAX_SOFT_REFERENCES
      The maximum number of soft references maintained by SoftLimitMRUCache. Default is 2048.
      See Also:
  • Method Details

    • verifyProperties

      public static void verifyProperties(Properties props)
      Issues warnings to the user when any obsolete or renamed property names are used.
      Parameters:
      props - The specified properties.
    • getBytecodeProvider

      public static BytecodeProvider getBytecodeProvider()
    • jvmHasTimestampBug

      public static boolean jvmHasTimestampBug()
      Does this JVM's implementation of Timestamp have a bug in which the following is true: new java.sql.Timestamp( x ).getTime() != x

      NOTE : IBM JDK 1.3.1 the only known JVM to exhibit this behavior.

      Returns:
      True if the JVM's Timestamp implementa
    • jvmHasJDK14Timestamp

      public static boolean jvmHasJDK14Timestamp()
      Deprecated.
      Starting with 3.3 Hibernate requires JDK 1.4 or higher
      Does this JVM handle Timestamp in the JDK 1.4 compliant way wrt to nano rolling>
      Returns:
      True if the JDK 1.4 (JDBC3) specification for Timestamp nano rolling is adhered to.
    • jvmSupportsLinkedHashCollections

      public static boolean jvmSupportsLinkedHashCollections()
      Deprecated.
      Starting with 3.3 Hibernate requires JDK 1.4 or higher
      Does this JVM support LinkedHashSet and LinkedHashMap?

      Note, this is true for JDK 1.4 and above; hence the deprecation.

      Returns:
      True if LinkedHashSet and LinkedHashMap are available.
      See Also:
    • jvmSupportsGetGeneratedKeys

      public static boolean jvmSupportsGetGeneratedKeys()
      Deprecated.
      Starting with 3.3 Hibernate requires JDK 1.4 or higher
      Does this JDK/JVM define the JDBC Statement interface with a 'getGeneratedKeys' method?

      Note, this is true for JDK 1.4 and above; hence the deprecation.

      Returns:
      True if generated keys can be retrieved via Statement; false otherwise.
      See Also:
    • useStreamsForBinary

      public static boolean useStreamsForBinary()
      Should we use streams to bind binary types to JDBC IN parameters?
      Returns:
      True if streams should be used for binary data handling; false otherwise.
      See Also:
    • useReflectionOptimizer

      public static boolean useReflectionOptimizer()
      Should we use reflection optimization?
      Returns:
      True if reflection optimization should be used; false otherwise.
      See Also:
    • getProperties

      public static Properties getProperties()
      Return System properties, extended by any properties specified in hibernate.properties.
      Returns:
      Properties
    • isolationLevelToString

      public static String isolationLevelToString(int isolation)
      Get the name of a JDBC transaction isolation level
      Parameters:
      isolation - as defined by java.sql.Connection
      Returns:
      a human-readable name
      See Also:
    • buildBytecodeProvider

      public static BytecodeProvider buildBytecodeProvider(Properties properties)