Hibernate is an object-relational mapping (ORM) library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database. Hibernate solves object-relational impedance mismatch problems by replacing direct persistence-related database accesses with high-level object handling functions.
As you already know, objects can inherit from each other to move common functionality into a superclass and have only the different parts in the children. The same can be achieved with Hibernate too: you can group common functionality to a parent class and add only the differences to the children — and you can map this relation to the database too.
Till now we have used in memory DB. Here in this article I will show you how to switch to another database which actually persists the data and you can retrieve it later, and what you have to re-configure to make things work as you expect.
If you have a bigger application you think about performance and how you can improve it. Caching is one way to do this because it enables fewer queries going to the database. Querying the database is always a performance impact because it is an I/O operation. And I/O operations are much slower than operations using only the applications memory.
Multi-tenancy indicates an approach in software development where a single application simultaneously serves multiple clients. These clients are also called tenants. This approach is very common in Software as a Service (SaaS) solutions.
If you ever felt like you need more control over Hibernate’s internal configuration this new feature is something you can leverage to achieve this goal. And this is useful if you have a simple project which only needs to use Hibernate and no other JPA framework: with the help of the bootstrapping API you can get your project up-and-running without much magic.