Generally we know that every session has its own cache memory. Cache is used to grow the performance of application and database. Caching is a machanism for storing the loaded objects into a chache memory. By the help of the cache memory we can avoid the number of hits as many as possible to give a better performance for critical applications.
caching is the facility of storing object temporally in the memory . The purpose of caching to improve the performance by reducing database hits . If same object is required by different session or user then it make sense to fetch them only one and to store them into the cache so that they can provide the cache each time they are requested.
Hibernate support caching at two levels:-
- First Level Caching
- Second Level Caching
First Level Caching:-(Transactional scope caching)
First level caching is implicitly enable. It is implemented by session. First level caching is responsible for storing the object used by user. Object in this cache has transactional scope, once the transaction is completed object of this cache are synchronize to the database and cache is discarded.
Second Level Cache :-(Application Scope caching)
Second level cache is not enable by default. This cache has a application scope, Object in this cache are shared by multiple users. This cache is managed by sessionFactory
When we want to load the same object from the database then instead of hitting the database once again, it loads from the local cache memory only, so that the number of round trips between an applications and database server got decreased. It means caching mechanism increase the performance of the application.
Hibernate does not provide implementation of Second level caching , it only provide specification how second level cache should be implemented. Third party implementation of second level cache are available:
- EHCACHE ( Easy hibernate Caching)
- OSCACHE (Open source caching)