Hibernate has several core framework objects that represent the different components of the architecture. The SessionFactory acts as a factory for Session objects and caches compiled object mappings. Each Session represents a single-threaded conversation with the database and manages a level one cache and transactions. Persistent objects are associated with a Session and represent the data model, while transient and detached objects are not associated with a Session. Transactions demarcate atomic units of work and are represented by the Transaction object. The ConnectionProvider manages connections to the database and abstracts the application from the underlying data source.