JPA_and_Hibernate

Hibernate interfaces explained

Posted On
Posted By admin

In this blog post, I will be explaining some of the interfaces that are commonly used in a Hibernate application

Sample Code

Consider the following code that queries a table via Hibernate:

public class Main {

	public static void main(String[] args) {
		
		Person person = new Person("Mickey Mouse",35); //This corresponds to a table called Person with name and age fields

		SessionFactory  sessionFactory = new Configuration().configure().buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		session.save(person);
		tx.commit();
		session.close();
		sessionFactory.close();
				
	}

}



Configuration

The Configuration object is the first Hibernate object that you will need to create in any Hibernate application. It encapsulates the Hibernate configuration file i.e. hibernate.cfg.xml. A typical Hibernate application usually creates a Configuration object only once during application initialization. The  configuration.configure method reads the hibernate.cfg.xml file and sets up the Configuration object using the properties in this file. The Configuration object is required to create the SessionFactory object.

SessionFactory

The SessionFactory contains all the data in the hibernate configuration file. The code creates a SessionFactory using a Configuration object. The configuration.buildSessionFactory method sets up the SessionFactory object with the configuration data in the config file. A typical Hibernate application create the SessionFactory object only once at the start of the application and keeps it for later use. The SessionFactory corresponds to the database config file, so if your application connects to several databases with different config files, you will need to have separate SessionFactory objects corresponding to each database.

Session

Next, the code creates a session object. The code uses the sessionFactory.openSession method to create a Session object.  The session represents the physical connection with the database, so whenever a session is created, internally a connection is established to the database. The code uses the session object to actually save data and retrieve data from the database.

Transaction

Next, the code creates a transaction. As you might be aware, in database terminology, a transaction represents a unit of work. So if you want to execute several database operations as a single unit, you can club them into a transaction. A transaction ensures that either all the operations will be executed. If one operation fails the entire transaction will fail. So the database will be reverted to the state that it was before the transaction began. Hibernate defines the transaction interface to represent a transaction.  A transaction is associated with a Session and is usually instantiated by a call to session.beginTransaction(). This gives an instance of the Transaction object. The code can then use the transaction object for committing the changes to the database.

If you'd like to watch a detailed video tutorial of this topic or other related topics, do check out my Hibernate course Hibernate from scratch

If you like this post, please do let me know via the comments box below.  You can also connect with me via my Facebook Page or subscribe to my Youtube channel!

Related Post

leave a Comment