Tech I Enjoy Logo

Custom Search




  Home >> Spring Framework


using SpringFramework Hibernate DAO Support:

Hiberate DAO Support provides an abstraction over usage of
Session, Transaction etc.

In  order to use HibernateDASupport, application DAO class
file may extend HibernateDAOSupport, and by setting SessionFactory
to this class by using setSessionFactory API, as shown below:

HibernateDAOSupport provided method such as getter and Setter
for the HibernateTemplate. HibernateTemplate provides many more
methods and it can abstract Session and Transaction related coding.

This example show a way of using HibernateDAOSupport and HibernateTemplate
(disclaimer: this example cannot replace careful evaluation of existing
requirement in hand, so this is a dummy implementation or example).

In this example I have used following softwares:
1. SpringFramework 1.2.8
2. Hiberate 3.2
3. Java 5.0
4. Eclipse 3.2
5. MySQL 5.0
6. MySQL JDBC driver.

This example has a client code and a configuration file with tags for creating JDBC datasource, SessionFactory, DAO etc. Client calls->Sample Business calls->Sample DAO calls->HibernateTemplate related save method to persist User object to database and create a single record in database. applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
  "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="myDataSource" 
   class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="username" value="test"/>
    <property name="password" value="test"/>		
  </bean>
  <bean id="mySessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="mappingResources">
    <list>
      <value>config/User.hbm.xml</value>
    </list> 
    </property> 
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">
	  org.hibernate.dialect.MySQL5InnoDBDialect
	</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.transaction.factory_class">
	  org.hibernate.transaction.JDBCTransactionFactory
	</prop>
      </props>
    </property>
  </bean>
  <bean id="sampledao" class="sample.SampleDAO">
    <property name="sessionFactory" ref="mySessionFactory"/>
  </bean>
</beans>	
Three separate bean tags are for creating datasource, session factory and sample DAO beans in the Spring application context. Corresponding Hibernate configuration file as shown below: User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 	
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="sample">
  <class name="User" table="User" lazy="true">
    <id name="id" access="property"/>
    <property name="name" access="property"/>
  </class>
</hibernate-mapping>
Class diagram of this example is as follows: And all those dependent jar files I required, those are to be included in the class path of Eclipse IDE as as follows: Let me share all the Java files / code from the above class diagram as follows: User.java
package sample;

public class User {
    private String id;
    private String name;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
Client.java
package sample.test;

import sample.SampleBusiness;
import sample.User;

public class Client {
    public Client() {
         User user = new User();
         user.setId("a001");
         user.setName("sample user name");
         System.out.println(new SampleBusiness().createUser(user));
         System.out.println(new SampleBusiness().createUser(user1));
    }
	public static void main(String[] args) {
        new Client();
	}
}
SampleBusiness.java
package sample;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SampleBusiness {
	static ClassPathXmlApplicationContext clsAppContext;
	static {
		System.out.println("about create application context");
		clsAppContext = new
		ClassPathXmlApplicationContext("config/applicationContext.xml");
	}
    public String createUser(User user) {
    	return getDao().createUser(user);
    }
    public DAO getDao() {
    	return (DAO) clsAppContext.getBean("sampledao");
    }
}
DAO.java
package sample;

import org.springframework.dao.DataAccessException;

public interface DAO {
    public String createUser(User user) throws DataAccessException;
}
SampleDAO.java
package sample;

import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class SampleDAO extends HibernateDaoSupport implements DAO{
    
	public String createUser(User user) throws DataAccessException {
		String userId = null;
		userId = (String) getHibernateTemplate().save(user);
		return userId;
	}
}
As you might have noticed that, Sample DAO class is using getHibernateTemplate method of HibernateDAOSupport class, so as to be able to abstract Hibernate Session and Transaction related coding (like begin and commit/rollback related coding). As you might noticed that Hibernate Flush and transaction commit operations are not present, still on execution of this createUser method, one record will be inserted into corresponding database table User.
If you like to share your comment/suggestions/feedback relating to this Page, you can do so by droping us an email at usingframeworks @ gmail . com with the subject line mentioning URL for this Page (i.e, /spring-hibernate-dao-example.php) or use this LINK. As per this website's privacy policy, we never disclose your email id, though we shall post your comments/suggestions/feedback with your name (optional) and date on this Page. If you don't want your comments/suggestions/feedback to be shared in this Page, please mention so in your email to us. Thank you very much..... If anything missed out , please let me know at techienjoy at yahoo . com
Example using Spring with Hibernate :
Example using Spring with Hibernate Framework and use
Current Session Context.
Spring Framework Web Example :
Spring Framework Web Example source code Explained.
Spring Batch Framework Example :
Spring Batch Framework Example source code
 and Step by step code walkthrough
Example using Spring with Hibernate :
Example using Spring with Hibernate Framework Part 2.
Example using Spring DAO with Hibernate :
Example using Spring DAO with Hibernate Framework.
Spring Framework Web Example :
Spring Framework Web Example source code Explained.
Spring Framework Local Stateless Session bean :
Spring Framework Local Stateless Session bean with
example source code explained.
Example using Spring with Hibernate :
Example using Spring with Hibernate Framework Part 1.
Spring Framework Remote Session Bean :
Spring Framework Example source code of
Remote Session Bean.
Interview Questions with answer on Spring Framework :
Interview Questions with answer on Spring Framework.
Spring Framework Example :
Spring Framework Example source code Explained.
Step by step code walkthrough
Spring Framework Singleton Example :
Spring Framework Singleton Example source code 
compared with GOF Singleton.
Spring Framework MVC and Tiles :
Spring Framework MVC and Tiles with Example 
source code explained.
Spring Framework Web Example and WSDL :
Spring Framework Web Example source code
with WSDL.Step by step code walkthrough
Example using Spring DAO with Hibernate :
Example using Spring DAO with Hibernate Framework Part 2.


References :
Tags: spring dao hibernate example
Tags: spring hibernate dao example
Tags: spring hibernate example 2
Tags: spring hibernate example current session context
Tags: spring hibernate example
Tags: Spring Interview Questions Answer
Tags: Spring Local SLBean
Tags: Spring MVC Tiles2
Tags: Spring Remote SLBean
Tags: Spring Singleton GOF Singleton Difference
Tags: spring web example
Tags: spring ws example
Tags: Spring
Tags: springws example wsdl



DISCLAIMER :
The content provided in this page is not warranted and/or guaranteed by techienjoy.com. 
techienjoy.com is not liable for any negative consequences that may result/arise from 
implementing directly/indirectly any information covered in these pages/articles/tutorials.

All contents of this site is/are written and provided on an "AS IS" basis,
without WARRANTIES or conditions of any kind, either express or implied, including, without
limitation, merchantability, or fitness for a particular purpose. You are solely responsible
for determining the appropriateness of using or refering this and assume any risks associated
with this.

In spite of all precautions taken to avoid any typo in these pages, there might be some 
issues like grammatical mistakes and typos being observed in these pages, techienjoy.com
extends sincerest apologies to all our visitors for the same.



Android Examples || Android Examples

© Copyright 2010-2012, TECHIENJOY, All Rights Reserved.      Privacy Policy     Disclaimer & Terms & Conditions