For long, Java has held one of the top-ranking positions in the most popular programming languages list. Naturally, being a high priority programming language preferred by developers worldwide, Java is accompanied by a massive collection of tools, libraries, and frameworks. In this post, we’re going to talk about a popular Java framework, Hibernate.
Anyone who’s worked with or works with Java is well-aware of Hibernate and its powers. However, let us break it down for those of you who’ve just come across this name – Hibernate.
What is Hibernate?
Hibernate is an ORM (object-relational mapping ) tool designed exclusively for Java. in other words, it offers a framework to help map an object-oriented model to a relational database. Hibernate primarily focuses on mapping from Java classes to database tables and mapping from Java data types to SQL data types.
Hibernate also extends data query and retrieval services. It is written in Java and is JVM-based. Hibernate offers reference implementations of Java Persistence API which makes it a fantastic choice for ORM (Object Relational Mapping). We can use Hibernate persistence API for CRUD operations
Originally, Hibernate was designed to serve as a simpler and better alternative of EJB2 (Enterprise Java Beans version 2). Today, Hibernate boasts of being one of the most widely used ORM tools for Java applications.
It is extensively used for developing Java-based enterprise applications for database operations. Also, Hibernate Persistence API is excellent for CRUD operations.
Now that you have some background knowledge of Hibernate, let’s get to know this ORM tool a little better with these X Hibernate Interview questions!
Hibernate Interview Questions & Answers
1.What is ORM?
ORM (Object Relational Mapping) refers to a technique of mapping objects with the data stored in a database. The aim of ORM is to simplify data creation, data access, and data manipulation.
2.What is JPA?
Java Persistence API (JPA) is a specification that allocates standards and functionalities to ORM tools. You can access JPA classes and interfaces from the javax.persistence package. All JPA specifications are defined using annotations in the javax.persistence package. The advantage of using JPA annotations is that they allow you to write implementation independent code.
3.What Are The Important JPA Annotations Used For Hibernate Mapping?
Hibernate supports JPA annotations along with many other annotations that you can access via the org.hibernate.annotations package. Here are seven of the most important JPA annotations:
javax.persistence.Entity – It is used in combination with model classes for declaring them as entity beans.
javax.persistence.Table – It is used with entity beans to define the corresponding table name in a database.
javax.persistence.Access – It is used to specify the access type, field, or property. The default value for this annotation is field.
javax.persistence.Id – It defines the primary key in the entity bean.
javax.persistence.EmbeddedId – It is used to specify a composite primary key in the entity bean.
javax.persistence.Column – It specifies the column name in the database table.
javax.persistence.GeneratedValue – It defines the strategy needed for generating the primary key.
HQL stands for Hibernate Query Language. It is an Object-Oriented query language, independent of the database.
5.How Would You Perform Mapping In Hibernate?
Hibernate’s association mappings feature facilitates mapping by supporting the four standard associations, same as that of a relational database model:
- One-to-one associations
- One-to-many associations
- Many-to-one associations
- Many-to-many associations
Each of these associations can be mapped as either unidirectional or bidirectional association.
6.Name the main interfaces/components of Hibernate.
Hibernate has six core interfaces – Configuration, SessionFactory, Session, Query, Criteria, and Transaction.
7.Can you create an SQL query in Hibernate?
Yes, you can create SQL queries in Hibernate. To create an SQL query, you must use the following syntax:
8.What is the Hibernate configuration file?
Hibernate configuration file stores database-specific configurations. It is used to initialize the SessionFactory interface. This file also contains other relevant information such as Dialect information which allows Hibernate to know the database type and mapping file/class details.
9.What is Persistent Class?
In Hibernate, the classes whose objects and instances are stored in database classes are called persistent classes.
The Session interface lies between Hibernate and a Java application layer. It is mainly used for performing database operations. Session helps to establish and maintain a connection between a Hibernate app and database. It offers different methods to perform create, read, update and delete operations for persistent objects.
Also, Session acts like a factory of Query, Criteria and Transaction, meaning it extends factory methods to return these instances. You can use Session object to create criteria and execute HQL queries and SQL native queries.
In Hibernate, SessionFactory is the factory class used to access Session objects. It reads the Hibernate configuration parameters and connects to the database to fetch Session objects. SessionFactory is essentially a factory of Session and it provides the instance of Session.
Once the SessionFactory is created, its internal state is fixed, making it immutable. The internal state of the SessionFactory contains the complete metadata of Object/Relational Mapping.
12.Distinguish between Hibernate configuration file and Hibernate mapping file.
Hibernate configuration file includes database-specific configurations and Dialect information. It is used to initialize SessionFactory. You can access the database credentials or JNDI resource information from the Hibernate configuration XML file.
On the other hand, Hibernate mapping file is used to define database table column mappings and entity bean fields. The mapping file is the core of every Hibernate app. It contains a mapping from a POJO class name to a table name and POJO class variable names to table column names.
13.What are POJOs?
POJO is an acronym for Plain Old Java Object. Essentially, POJOs are java beans designed with standard getter and setter methods for individual properties. The advantage of using POJOs instead of Java classes is that you can write clean, precise, and efficient code.
14. Name the key components of a Hibernate configuration object.
A Hibernate configuration object has two key components
- Database Connection which is managed by one or more configuration files.
- Class Mapping setup which is used to establish the connection between Java classes and database tables.
15.What is Hibernate Dialect?
Hibernate Dialect specifies the type of database you wish to use. It allows Hibernate to know this information in advance to generate appropriate SQL statements that’ll best suit your preferred/specified database type.
16.Define “Hibernate caching.”
Hibernate caching is the process of querying data to enhance the speed and performance of a Hibernate application. The aim is to minimize the number of database queries, resulting in a reduced throughput time.
EHCache is Hibernate’s default cache feature.
17.What are first-level and second-level cache?
In Hibernate, first-level cache refers to Session cache. It is the mandatory cache through which all the requests must pass. The second cache is an optional cache that caches objects across the sessions.
You can configure a second-level cache based on a pre-collection and per-class basis. As a general rule, the first-level cache must be consulted before you make any attempt to locate an object in the second-level cache.
18.Explain the different stages of an object/entity bean.
An object/entity bean instance usually exists in any one of the following three phases:
- Transient – In this phase, an object never persists or associates with any session. You can convert transient instances into persistent by using save(), persist() or saveOrUpdate() functions. To revert a persistent instance back to transient, you can use the delete() command.
- Persistent – An object reaches the persistent state when it associates with a unique session. All instances returned by get() or load() functions are in the persistent state.
- Detached – When a persistent object does not associate with any session, it reaches the detached state. You can convert a detached instance into persistent via the update(), saveOrUpdate(), lock(), or replicate() functions.
19.What is the purpose of Dirty Checking in Hibernate?
Hibernate’s automatic dirty checking feature automatically calls update statement on objects modified in a transaction, thereby helping developers to avoid time-consuming write actions.
Dirty checking only modifies/updates fields that require action while keeping the other fields untouched. Overall, it reduces the database write time.
20. Define “Transaction Management.”
Transaction Management is a feature of the Spring framework. It is basically the process of managing a set of commands/statements. In Hibernate, the Transaction interface performs Transaction Management by maintaining abstraction from the transaction implementation (JTA, JDBC). You can initiate a transaction by calling the session.beginTransaction() method.
Also Read: Java Interview Questions & Answers
To wrap up, even though these twenty Hibernate interview questions scratch the surface of the topic in question, we hope this helps you break the ice with Hibernate and dig deeper into it!
If you’re interested to learn more about Java, full-stack software development, check out upGrad & IIIT-B’s PG Diploma in Full-stack Software Development which is designed for working professionals and offers 500+ hours of rigorous training, 9+ projects, and assignments, IIIT-B Alumni status, practical hands-on capstone projects & job assistance with top firms.
We wish you all the best to start your career in Java!