Concrete implementation of the
SessionFactory interface. Has the following responsibilities
- caches configuration settings (immutably)
- caches "compiled" mappings ie. EntityPersisters and CollectionPersisters (immutable)
- caches "compiled" queries (memory sensitive cache)
- manages PreparedStatements
- delegates JDBC Connection management to the ConnectionProvider
- factory for instances of SessionImpl
This class must appear immutable to clients, even if it does all kinds of caching and pooling under the covers. It is crucial that the class is not only thread safe, but also highly concurrent. Synchronization must be used extremely sparingly.
@see org.hibernate.service.jdbc.connections.spi.ConnectionProvider
@see org.hibernate.Session
@see org.hibernate.hql.QueryTranslator
@see org.hibernate.persister.entity.EntityPersister
@see org.hibernate.persister.collection.CollectionPersister
@author Gavin King