|
HMLCAThreadsafenessEach session works with its own distinct set of persistent instances Non-blocking data accessHibernate never forces threads to wait for each other (the database itself might) Session level cacheA session-level cache resolves circular/shared references and repeated requests for the same instance in a particular session. The cache is completely safe for use in a clustered environment or where Hibernate shares access to the database with other (legacy) applications. The session-level cache is often scoped to a single database transaction. However, it is possible to use a long-lived session spanning a sequence of user interactions, allowing a natural cache of data associated with the "application transaction". Optional second-level cacheHibernate features an extremely granular (class or collection role) second-level cache. The actual cache implementation is completely pluggable and supports clustered cache solutions like Tangosol Coherence, SwarmCache, JBoss TreeCache, as well as process-level cache implementations such as EHCache and OSCache. The second-level cache is appropriate for
Optional query cacheQuery result sets may be selectively cached Works well with othersHibernate behaves correctly in an environment where other applications have simultaneous access to the database. No "special" database tablesHibernate itself has no persistent state - so theres no extra database tables maintaining locks, mapping data, etc. Out of the box support for clustered cachingBoth the second-level and query cache may be clustered |
|||||||||||||