In this section we will discuss concept of SessionFactory.
Hibernate SessionFactory :
For SessionFactory import org.hibernate.SessionFactory API.
SessionFactory is one of Hibernate concept. It creates session instances. In
general an application has a single SessionFactory.
It is immutable and when it is created its internal state is set. This internal
state contains metadata about O/R mapping.
The behavior of a sessionFactory is controlled by properties supplied at
configuration time.
SessionFactory is thread safe so that many threads can access SessionFactory and
request for sessions.
Example : Here we are going to give you example and describing how sessionFactory plays its role and how session is created.
Take a view on Hibernate.cfg.xml - Here we are configuring sessionFactory.
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate_examples</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">none</property> <mapping class="net.roseindia.table.Employee" /> </session-factory> </hibernate-configuration>
Main Class HibernateSessionFactory.java -Here we show how sessionFactory creates Session.
package net.roseindia.main;
import java.util.*;
import net.roseindia.util.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
public class HibernateSessionFactory {
public static void main(String[] args) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); //Creating instance of SessionFactory
Session session = sessionFactory.openSession(); // session is opened
String hql = "SELECT emp.name, emp.salary, emp.dateOfJoin from Employee emp";
Query query = session.createQuery(hql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List objectList = query.list();
Iterator iterator = objectList.iterator();
System.out.println("Employee Name \t Salary \t Date of Join");
while (iterator.hasNext()) {
Map map = (Map) iterator.next();
System.out.print(map.get("0"));
System.out.print("\t\t" + map.get("1"));
System.out.print("\t\t" + map.get("2"));
System.out.println();
}
session.close(); // session is closed
}
}
Output :
Hibernate: select employee0_.name as col_0_0_, employee0_.salary as col_1_0_, employee0_.date_of_join as col_2_0_ from employee employee0_ Employee Name Salary Date of Join Mandy 20000 2010-03-12 00:00:00.0 Som 20000 1999-06-22 00:00:00.0 Mac 15000 2003-12-23 00:00:00.0 Roxi 22000 2001-02-03 00:00:00.0 Rowdy 20000 2012-06-27 00:00:00.0 Linda 20000 2010-06-12 00:00:00.0 Lizza 25000 2010-06-12 00:00:00.0
Click here to download complete source code
If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.
Ask Questions? Discuss: Hibernate : SessionFactory
Post your Comment