How to create sessionFactory in Hibernate from Configuration object. 3 ways of creating Hibernate sessionFactory Example.
1. Overview of SessionFactory in Hibernate
Hibernate SessionFactory object is the first class citizen in Hibernate ORM framework for any application. Configuration Object needs information pertaining to database connection & mapping(XML or Annotations). There are several approaches to provide this information to Hibernate:
- Using only hibernate.cfg.xml
- Using hibernate.properties
2. SessionFactory object from hibernate.cfg.xml
hibernate.cfg.xml is a standard XML file containing database connection information along with mapping information. This file needs to be placed in root of classpath of the application. I am explainting, how you configure and create sessionFactory in Hibernate example from hibernate.cfg.xml. In this example, I use mySQL for connection string.
org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver myuser mypassword jdbc:mysql://localhost:3306/mysoftkey true false
Key points of above configuration for getting object of sessinoFactory in Hibernate are as:
- The
dialectproperty informs hibernate to generate database specific (MySQL here) instructions. driver_classdefines the database specific driver hibernate will use to make the connection.username,password&URLare general connection properties, nothing special.show_sqlwill instruct hibernate to log all the statements on console and format_sql instructs it to display properly formatted SQL.- mapping tag instructs hibernate to perform mapping for mentioned resources(in case of XML Mapping) or classes(in case of Annotation mapping).
- Assuming that
hibernate.cfg.xmlis created for your application and placed in application classpath
Hibernate SesstionFactory(& Session) can be created from Configuration as follows:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession();
3. Hibernate SessionFactory Using hibernate.properties
hibernate.properties is a standard Property file containing database connection information. In this case, you can provide mapping information directly while creating Configuration Object. Below is a sample hibernate.properties file.
hibernate.dialect = org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.username=myuser hibernate.connection.password=mypassword hibernate.connection.url= jdbc:mysql://localhost:3306/Hibernate_Example hibernate.show_sql=true hibernate.format_sql=true
Assuming that hibernate.properties file is created for your application and placed in application classpath, SesstionFactory(& Session) can be created as follows:
Configuration cfg = new Configuration().addResource("Employee.hbm.xml").addResource("Address.hbm.xml");
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
In case you are using annotation mapping, bello code will be used for creating SessionFactory from Configuration:
Configuration cfg = new Configuration()
.addClass(com.mysoftkey.hibernate.entity.Employee.class)
.addClass(com.mysoftkey.hibernate.entity.Address.class);
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
4. Get SsessionFactory Programmatically
In case you don’t want to retain hibernate.properties file (which may not be a good idea ), you can specify everything programatically. Its all about, how you feel comfortable but there is different aspect of it which you should consider, while configuring Hibernate sessinoFactory Object in you application.
Creating of Hibenate SessionFactaory from Configuration object, SessionFactaory example will look like:
Configuration cfg = new Configuration()
.addClass(com.mysoftkey.hibernate.entity.Employeeclass)
.addClass(com.mysoftkey.hibernate.entity.Address.class).
.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
.setProperty("hibernate.connection.username", "myuser");
.setProperty("hibernate.connection.password", "mypassword")
.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/hibernate_example")
.setProperty("hibernate.show_sql", "true")
.setProperty("hibernate.format_sql", "true");
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
5. Reference
If you are new in Hibernate you can visit Hello world Hibernate ExampleThanks for visiting this post for creating SessionFactaory object in Hibernate by example. You can also visit Java Hibernate ORM Tutorial Listing page for more articles on Hibernate ORM framework.
Your comments are welcome to improve this post of getting SessionFactaory object in Hibernate Java. I hope you enjoyed reading this article. Happy Learning 🙂