org.springframework.orm.hibernate4
Class LocalSessionFactoryBuilder

java.lang.Object
  extended by org.hibernate.cfg.Configuration
      extended by org.springframework.orm.hibernate4.LocalSessionFactoryBuilder
All Implemented Interfaces:
Serializable

public class LocalSessionFactoryBuilder
extends Configuration

A Spring-provided extension of the standard Hibernate Configuration class, adding SpringSessionContext as a default and providing convenient ways to specify a DataSource and an application class loader.

This is designed for programmatic use, e.g. in @Bean factory methods. Consider using LocalSessionFactoryBean for XML bean definition files.

NOTE: To set up Hibernate 4 for Spring-driven JTA transactions, make sure to either use the setJtaTransactionManager(java.lang.Object) method or to set the "hibernate.transaction.factory_class" property to CMTTransactionFactory. Otherwise, Hibernate's smart flushing mechanism won't work properly.

Since:
3.1
Author:
Juergen Hoeller
See Also:
LocalSessionFactoryBean, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.hibernate.cfg.Configuration
Configuration.MappingsImpl, Configuration.MetadataSourceQueue
 
Field Summary
 
Fields inherited from class org.hibernate.cfg.Configuration
ARTEFACT_PROCESSING_ORDER, auxiliaryDatabaseObjects, classes, collections, columnNameBindingPerTable, DEFAULT_ARTEFACT_PROCESSING_ORDER, DEFAULT_CACHE_CONCURRENCY_STRATEGY, extendsQueue, fetchProfiles, filterDefinitions, imports, metadataSourceQueue, namedQueries, namedSqlQueries, namingStrategy, propertyReferences, secondPasses, settingsFactory, sqlFunctions, sqlResultSetMappings, tableNameBinding, tables, typeDefs, USE_NEW_ID_GENERATOR_MAPPINGS, xmlHelper
 
Constructor Summary
LocalSessionFactoryBuilder(DataSource dataSource)
          Create a new LocalSessionFactoryBuilder for the given DataSource.
LocalSessionFactoryBuilder(DataSource dataSource, ClassLoader classLoader)
          Create a new LocalSessionFactoryBuilder for the given DataSource.
LocalSessionFactoryBuilder(DataSource dataSource, ResourceLoader resourceLoader)
          Create a new LocalSessionFactoryBuilder for the given DataSource.
 
Method Summary
 LocalSessionFactoryBuilder addAnnotatedClasses(Class<?>... annotatedClasses)
          Add the given annotated classes in a batch.
 LocalSessionFactoryBuilder addPackages(String... annotatedPackages)
          Add the given annotated packages in a batch.
 SessionFactory buildSessionFactory()
          Build the SessionFactory.
 LocalSessionFactoryBuilder scanPackages(String... packagesToScan)
          Perform Spring-based scanning for entity classes, registering them as annotated classes with this Configuration.
 LocalSessionFactoryBuilder setJtaTransactionManager(Object jtaTransactionManager)
          Set the Spring JtaTransactionManager or the JTA TransactionManager to be used with Hibernate, if any.
 
Methods inherited from class org.hibernate.cfg.Configuration
add, addAnnotatedClass, addAuxiliaryDatabaseObject, addCacheableFile, addCacheableFile, addCacheableFileStrictly, addClass, addDirectory, addDocument, addFetchProfile, addFile, addFile, addFilterDefinition, addInputStream, addJar, addPackage, addProperties, addResource, addResource, addSqlFunction, addURL, addXML, buildMapping, buildMappings, buildSessionFactory, buildSettings, buildSettings, configure, configure, configure, configure, configure, createMappings, doConfigure, doConfigure, findPossibleExtends, generateDropSchemaScript, generateSchemaCreationScript, generateSchemaUpdateScript, getClassMapping, getClassMappings, getCollectionMapping, getCollectionMappings, getConfigurationInputStream, getEntityNotFoundDelegate, getEntityResolver, getEntityTuplizerFactory, getFilterDefinitions, getIdentifierGeneratorFactory, getImports, getInterceptor, getMappedSuperclassMappings, getNamedQueries, getNamedSQLQueries, getNamingStrategy, getProperties, getProperty, getReflectionManager, getSessionFactoryObserver, getSqlFunctions, getSqlResultSetMappings, getTableMappings, getTypeResolver, iterateFetchProfiles, mergeProperties, registerTypeOverride, registerTypeOverride, registerTypeOverride, reset, secondPassCompile, secondPassCompileForeignKeys, setCacheConcurrencyStrategy, setCacheConcurrencyStrategy, setCacheConcurrencyStrategy, setCollectionCacheConcurrencyStrategy, setCollectionCacheConcurrencyStrategy, setEntityNotFoundDelegate, setEntityResolver, setInterceptor, setNamingStrategy, setPrecedence, setProperties, setProperty, setSessionFactoryObserver, validateSchema
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LocalSessionFactoryBuilder

public LocalSessionFactoryBuilder(DataSource dataSource)
Create a new LocalSessionFactoryBuilder for the given DataSource.

Parameters:
dataSource - the JDBC DataSource that the resulting Hibernate SessionFactory should be using (may be null)

LocalSessionFactoryBuilder

public LocalSessionFactoryBuilder(DataSource dataSource,
                                  ClassLoader classLoader)
Create a new LocalSessionFactoryBuilder for the given DataSource.

Parameters:
dataSource - the JDBC DataSource that the resulting Hibernate SessionFactory should be using (may be null)
classLoader - the ClassLoader to load application classes from

LocalSessionFactoryBuilder

public LocalSessionFactoryBuilder(DataSource dataSource,
                                  ResourceLoader resourceLoader)
Create a new LocalSessionFactoryBuilder for the given DataSource.

Parameters:
dataSource - the JDBC DataSource that the resulting Hibernate SessionFactory should be using (may be null)
resourceLoader - the ResourceLoader to load application classes from
Method Detail

setJtaTransactionManager

public LocalSessionFactoryBuilder setJtaTransactionManager(Object jtaTransactionManager)
Set the Spring JtaTransactionManager or the JTA TransactionManager to be used with Hibernate, if any. Allows for using a Spring-managed transaction manager for Hibernate 4's session and cache synchronization, with the "hibernate.transaction.jta.platform" automatically set to it. Also sets "hibernate.transaction.factory_class" to CMTTransactionFactory, instructing Hibernate to interact with externally managed transactions.

A passed-in Spring JtaTransactionManager needs to contain a JTA TransactionManager reference to be usable here, except for the WebSphere case where we'll automatically set WebSphereExtendedJtaPlatform accordingly.

Note: If this is set, the Hibernate settings should not contain a JTA platform setting to avoid meaningless double configuration.


addAnnotatedClasses

public LocalSessionFactoryBuilder addAnnotatedClasses(Class<?>... annotatedClasses)
Add the given annotated classes in a batch.

See Also:
Configuration.addAnnotatedClass(java.lang.Class), scanPackages(java.lang.String...)

addPackages

public LocalSessionFactoryBuilder addPackages(String... annotatedPackages)
Add the given annotated packages in a batch.

See Also:
Configuration.addPackage(java.lang.String), scanPackages(java.lang.String...)

scanPackages

public LocalSessionFactoryBuilder scanPackages(String... packagesToScan)
                                        throws HibernateException
Perform Spring-based scanning for entity classes, registering them as annotated classes with this Configuration.

Parameters:
packagesToScan - one or more Java package names
Throws:
HibernateException - if scanning fails for any reason

buildSessionFactory

public SessionFactory buildSessionFactory()
                                   throws HibernateException
Build the SessionFactory.

Overrides:
buildSessionFactory in class Configuration
Throws:
HibernateException