Hibernate - Cache Eviction with Example
Last Updated :
28 Apr, 2025
Caching in Hibernate means storing and reusing frequently used data to speed up your application. There are two kinds of caching: Session-level and SessionFactory-level. Level 1 cache is a cache that stores objects that have been queried and persist to the current session. This cache helps to reduce the number of database round trips by storing objects that are frequently accessed in the session. Level 1 cache is the default cache that is stored by default in hibernate. It is related to the hibernate session object.
Hibernate’s Level 2 caching is a built-in caching mechanism that allows you to cache data across several sessions. Level 2 cache stores data in your application’s shared cache region, which is accessible by every Hibernate session in your application. Level 2 caching can help optimize your application by reducing the number of database queries needed to load data. There are several cache providers available for Hibernate. You can use any of them, including Ehcache, Infinispan, Hazelcast, and others.
Importance of Cache Eviction
The process of cache eviction involves the deletion or replacement of data stored in a cache. This is a critical component of cache management as it guarantees that the cache remains functional and efficient. Here are some reasons why cache eviction is important:
- Maximizing cache space: Caches have a limited amount of space, and if the cache becomes full, new data cannot be stored. Eviction ensures that the cache is not filled with outdated or unused data, allowing space for new data.
- Improved cache performance: Eviction ensures that the cache only contains relevant data, increasing the cache hit rate and improving overall performance.
- Avoiding data staleness: Data in a cache may become stale over time, especially if it is rarely accessed. Eviction removes such data, ensuring that only fresh data is stored in the cache.
- Reducing cache access time: Eviction ensures that the cache only contains relevant data, which reduces the time needed to access data from the cache.
- Reducing cache misses: Eviction helps reduce the occurrence of cache misses, which are situations where requested data is not found in the cache, and must be retrieved from slower storage such as a disk.
Definition of Cache Eviction
When a cache gets full, it can't store new data without getting rid of old data. That's what cache eviction is all about. It's the process of getting rid of or swapping out data in the cache to make room for new stuff. It's done by using algorithms to figure out which data to get rid of. There are different policies for doing this, like LRU (Least Recently Used), LFU (Frequently Used), and RPP (Random Replacement). These policies are picked based on the type of data being stored and how often it's accessed. The idea is to make sure the cache only has stuff that's important and frequently accessed. That way, it'll be more efficient and work better.
Reasons for Cache Eviction
There are several reasons for cache eviction, which are as follows:
- Limited cache size: Caches have a limited size, and if the cache becomes full, new data cannot be stored. Eviction ensures that the cache is not filled with outdated or unused data, making space for new data.
- Stale data: Data in a cache may become stale over time, especially if it is rarely accessed. Eviction removes such data, ensuring that only fresh data is stored in the cache.
- Access frequency: Some data may be accessed more frequently than others. Eviction algorithms can prioritize frequently accessed data and remove less frequently accessed data.
- Cache efficiency: Caches are designed to store frequently accessed data, and eviction ensures that the cache only contains relevant data, which improves the cache hit rate and overall performance.
- Cache consistency: Caches may hold copies of data that may be modified by other processes or threads. Eviction ensures that the cache holds the most recent version of the data, improving cache consistency.
- Dynamic data: Some data may change over time, and caching this data may not be effective. Eviction algorithms can remove data that is likely to change frequently.
Different Types of Cache Eviction
Cache eviction is the process of removing data from a cache when the cache becomes full or when the data is no longer needed. There are several different types of cache eviction algorithms used by computer systems, including:
- Time-Based Eviction
- Count-Based Eviction
- Query Result Eviction
- Cache Region Clearing
1. Time-Based Eviction
- Time-based eviction is a cache eviction strategy that involves removing data from the cache after a certain period has elapsed since the data was last accessed or added to the cache. The idea behind this strategy is that the data in the cache may become stale or irrelevant after a certain amount of time, and it is better to remove it from the cache to make room for more relevant data.
- Depending on your system’s requirements, you may be able to implement time-based eviction in different ways. For instance, some systems use a fixed TTL for all cache data, while others use a TTI based on how long it’s been since the last time you accessed the data.
2. Count-Based Eviction
- Count-Based Eviction is a technique used in cache management, where items are removed from the cache based on the number of times they have been accessed. The basic idea is that items that are accessed frequently are more likely to be accessed again shortly, so they should be kept in the cache. On the other hand, items that are accessed less frequently are less likely to be accessed again, so they can be evicted to make room for more frequently accessed items.
- Each item in your cache is associated with a counter. Every time you access an item, the counter on that item goes up. When your cache gets too full, the item that has the lowest counter will be evicted.
3. Query Result Eviction
- Query result eviction refers to the process of removing or expiring cached query results from a database or data storage system. When a query is executed in a database, the result of that query is typically stored in a cache to improve performance. This cache can be set to expire after a certain period or when new data is added to the database.
- When the cached query result is evicted, it is removed from the cache and the next time the same query is executed, the database will have to retrieve the data again from its primary storage location.
4. Cache Region Clearing
- Cache region clearing refers to the process of deleting or emptying the cache data stored in a particular region of a device or system. A cache is a temporary storage area that stores frequently accessed data to improve the performance of the system. When cache data is cleared, it is removed from the cache memory, and the system needs to retrieve the data again from the source, which may take more time.
- Cache regions can be cleared in various ways, depending on the system or device being used. For example, web browsers usually have options to clear the cache, either for specific regions or for the entire cache. Similarly, mobile devices and computers may have built-in tools for clearing the cache, or users may need to use third-party applications or software to perform the task.
Cache Eviction Strategies in Hibernate
Hibernate supports these cache eviction strategies through its second-level cache, which is a shared cache that is used to store entities and collections across multiple sessions. The second-level cache can be configured with different eviction policies for each cache region, allowing developers to optimize the caching behavior for different parts of their applications.
- Least Recently Used (LRU): Least Recently Unused (LRU) is an algorithm that removes data from the cache that has not been used for the longest period. LRU is based on the premise that data that has been unutilized for a long period is unlikely to be required in the future.
- First-In-First-Out (FIFO): First-in-first-out (FIFO) is an algorithm that prioritizes the removal of previously added data from the cache. The rationale behind this is that the longer the data has resided in the cache, the less likely it is to be required.
- Least Frequently Used (LFU): Least Frequently Utilized (LFU) is an algorithm that removes data from the cache based on the premise that the least frequently accessed data is unlikely to be required in the future.
Implementation of Cache Eviction in Hibernate
The following is an example code snippet that demonstrates how to implement cache eviction in Hibernate using the second-level cache.
Java
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
// Enable second-level cache for the entity
sessionFactory.getCache().evictEntityRegion(User.class);
// Perform some database operation
User user = session.get(User.class, 1L);
user.setName("John Doe");
session.update(user);
// Evict the cache for the entity
sessionFactory.getCache().evictEntity(User.class, user.getId());
tx.commit();
session.close();
Note: You can also configure cache eviction policies using third-party libraries like Ehcache or Hazelcast. These libraries provide more advanced caching options such as eviction policies based on the time-to-live or time-to-idle.
Conclusion
- In conclusion, cache eviction is an essential process in Hibernate's caching mechanism that helps to maintain the accuracy and consistency of cached data. Hibernate provides a second-level cache that can be used to store entities, collections, and query results in memory. However, cached data can become stale due to database updates, and we need to remove stale data from the cache to ensure that the next retrieval of data is accurate and up-to-date.
- Cache eviction can be implemented in Hibernate using methods like evictEntityRegion() and evictEntity() to remove cached data for specific entities. Additionally, third-party libraries like Ehcache or Hazelcast can be used to configure more advanced cache eviction policies based on time-to-live or time-to-idle.
- Overall, understanding how to implement cache eviction in Hibernate is essential for developing high-performance applications that leverage Hibernate's caching mechanism to improve the speed of database operations.
Similar Reads
Java Tutorial Java is a high-level, object-oriented programming language used to build web apps, mobile applications, and enterprise software systems. Known for its Write Once, Run Anywhere capability, which means code written in Java can run on any device that supports the Java Virtual Machine (JVM).Syntax and s
10 min read
Basics
Introduction to JavaJava is a high-level, object-oriented programming language developed by Sun Microsystems in 1995. It is platform-independent, which means we can write code once and run it anywhere using the Java Virtual Machine (JVM). Java is mostly used for building desktop applications, web applications, Android
4 min read
Java Programming BasicsJava is one of the most popular and widely used programming language and platform. A platform is an environment that helps to develop and run programs written in any programming language. Java is fast, reliable and secure. From desktop to web applications, scientific supercomputers to gaming console
4 min read
Java MethodsJava Methods are blocks of code that perform a specific task. A method allows us to reuse code, improving both efficiency and organization. All methods in Java must belong to a class. Methods are similar to functions and expose the behavior of objects.Example: Java program to demonstrate how to crea
7 min read
Access Modifiers in JavaIn Java, access modifiers are essential tools that define how the members of a class, like variables, methods, and even the class itself, can be accessed from other parts of our program. They are an important part of building secure and modular code when designing large applications. In this article
6 min read
Arrays in JavaIn Java, an array is an important linear data structure that allows us to store multiple values of the same type. Arrays in Java are objects, like all other objects in Java, arrays implicitly inherit from the java.lang.Object class. This allows you to invoke methods defined in Object (such as toStri
9 min read
Java StringsIn Java, a String is the type of object that can store a sequence of characters enclosed by double quotes and every character is stored in 16 bits, i.e., using UTF 16-bit encoding. A string acts the same as an array of characters. Java provides a robust and flexible API for handling strings, allowin
8 min read
Regular Expressions in JavaIn Java, Regular Expressions or Regex (in short) in Java is an API for defining String patterns that can be used for searching, manipulating, and editing a string in Java. Email validation and passwords are a few areas of strings where Regex is widely used to define the constraints. Regular Expressi
7 min read
OOPs & Interfaces
Classes and Objects in JavaIn Java, classes and objects are basic concepts of Object Oriented Programming (OOPs) that are used to represent real-world concepts and entities. A class is a template to create objects having similar properties and behavior, or in other words, we can say that a class is a blueprint for objects.An
10 min read
Java ConstructorsIn Java, constructors play an important role in object creation. A constructor is a special block of code that is called when an object is created. Its main job is to initialize the object, to set up its internal state, or to assign default values to its attributes. This process happens automaticall
10 min read
Java OOP(Object Oriented Programming) ConceptsBefore Object-Oriented Programming (OOPs), most programs used a procedural approach, where the focus was on writing step-by-step functions. This made it harder to manage and reuse code in large applications.To overcome these limitations, Object-Oriented Programming was introduced. Java is built arou
10 min read
Java PackagesPackages in Java are a mechanism that encapsulates a group of classes, sub-packages and interfaces. Packages are used for: Prevent naming conflicts by allowing classes with the same name to exist in different packages, like college.staff.cse.Employee and college.staff.ee.Employee.They make it easier
8 min read
Java InterfaceAn Interface in Java programming language is defined as an abstract type used to specify the behaviour of a class. An interface in Java is a blueprint of a behaviour. A Java interface contains static constants and abstract methods. Key Properties of Interface:The interface in Java is a mechanism to
11 min read
Collections
Exception Handling
Java Exception HandlingException handling in Java is an effective mechanism for managing runtime errors to ensure the application's regular flow is maintained. Some Common examples of exceptions include ClassNotFoundException, IOException, SQLException, RemoteException, etc. By handling these exceptions, Java enables deve
8 min read
Java Try Catch BlockA try-catch block in Java is a mechanism to handle exceptions. This make sure that the application continues to run even if an error occurs. The code inside the try block is executed, and if any exception occurs, it is then caught by the catch block.Example: Here, we are going to handle the Arithmet
4 min read
Java final, finally and finalizeIn Java, the keywords "final", "finally" and "finalize" have distinct roles. final enforces immutability and prevents changes to variables, methods, or classes. finally ensures a block of code runs after a try-catch, regardless of exceptions. finalize is a method used for cleanup before an object is
4 min read
Chained Exceptions in JavaChained Exceptions in Java allow associating one exception with another, i.e. one exception describes the cause of another exception. For example, consider a situation in which a method throws an ArithmeticException because of an attempt to divide by zero.But the root cause of the error was an I/O f
3 min read
Null Pointer Exception in JavaA NullPointerException in Java is a RuntimeException. It occurs when a program attempts to use an object reference that has the null value. In Java, "null" is a special value that can be assigned to object references to indicate the absence of a value.Reasons for Null Pointer ExceptionA NullPointerE
5 min read
Exception Handling with Method Overriding in JavaException handling with method overriding in Java refers to the rules and behavior that apply when a subclass overrides a method from its superclass and both methods involve exceptions. It ensures that the overridden method in the subclass does not declare broader or new checked exceptions than thos
4 min read
Java Advanced
Java Multithreading TutorialThreads are the backbone of multithreading. We are living in the real world which in itself is caught on the web surrounded by lots of applications. With the advancement in technologies, we cannot achieve the speed required to run them simultaneously unless we introduce the concept of multi-tasking
15+ min read
Synchronization in JavaIn multithreading, synchronization is important to make sure multiple threads safely work on shared resources. Without synchronization, data can become inconsistent or corrupted if multiple threads access and modify shared variables at the same time. In Java, it is a mechanism that ensures that only
10 min read
File Handling in JavaIn Java, with the help of File Class, we can work with files. This File Class is inside the java.io package. The File class can be used to create an object of the class and then specifying the name of the file.Why File Handling is Required?File Handling is an integral part of any programming languag
6 min read
Java Method ReferencesIn Java, a method is a collection of statements that perform some specific task and return the result to the caller. A method reference is the shorthand syntax for a lambda expression that contains just one method call. In general, one does not have to pass arguments to method references.Why Use Met
9 min read
Java 8 Stream TutorialJava 8 introduces Stream, which is a new abstract layer, and some new additional packages in Java 8 called java.util.stream. A Stream is a sequence of components that can be processed sequentially. These packages include classes, interfaces, and enum to allow functional-style operations on the eleme
15+ min read
Java NetworkingWhen computing devices such as laptops, desktops, servers, smartphones, and tablets and an eternally-expanding arrangement of IoT gadgets such as cameras, door locks, doorbells, refrigerators, audio/visual systems, thermostats, and various sensors are sharing information and data with each other is
15+ min read
JDBC TutorialJDBC stands for Java Database Connectivity. JDBC is a Java API or tool used in Java applications to interact with the database. It is a specification from Sun Microsystems that provides APIs for Java applications to communicate with different databases. Interfaces and Classes for JDBC API comes unde
12 min read
Java Memory ManagementJava memory management is the process by which the Java Virtual Machine (JVM) automatically handles the allocation and deallocation of memory. It uses a garbage collector to reclaim memory by removing unused objects, eliminating the need for manual memory managementJVM Memory StructureJVM defines va
4 min read
Garbage Collection in JavaGarbage collection in Java is an automatic memory management process that helps Java programs run efficiently. Java programs compile to bytecode that can be run on a Java Virtual Machine (JVM). When Java programs run on the JVM, objects in the heap are created, which is a portion of memory dedicated
7 min read
Memory Leaks in JavaIn programming, a memory leak happens when a program keeps using memory but does not give it back when it's done. It simply means the program slowly uses more and more memory, which can make things slow and even stop working. Working of Memory Management in JavaJava has automatic garbage collection,
3 min read
Practice Java
Java Interview Questions and AnswersJava is one of the most popular programming languages in the world, known for its versatility, portability, and wide range of applications. Java is the most used language in top companies such as Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon, and many more because of its features and per
15+ min read
Java Programs - Java Programming ExamplesIn this article, we will learn and prepare for Interviews using Java Programming Examples. From basic Java programs like the Fibonacci series, Prime numbers, Factorial numbers, and Palindrome numbers to advanced Java programs.Java is one of the most popular programming languages today because of its
8 min read
Java Exercises - Basic to Advanced Java Practice Programs with SolutionsLooking for Java exercises to test your Java skills, then explore our topic-wise Java practice exercises? Here you will get 25 plus practice problems that help to upscale your Java skills. As we know Java is one of the most popular languages because of its robust and secure nature. But, programmers
7 min read
Java Quiz | Level Up Your Java SkillsThe best way to scale up your coding skills is by practicing the exercise. And if you are a Java programmer looking to test your Java skills and knowledge? Then, this Java quiz is designed to challenge your understanding of Java programming concepts and assess your excellence in the language. In thi
1 min read
Top 50 Java Project Ideas For Beginners and Advanced [Update 2025]Java is one of the most popular and versatile programming languages, known for its reliability, security, and platform independence. Developed by James Gosling in 1982, Java is widely used across industries like big data, mobile development, finance, and e-commerce.Building Java projects is an excel
15+ min read