In this tutorial you will see how to integrate spring DAO and hibernate. I
assume you are comfortable with both spring and hibernate. At the end of
this example you will learn how to use Spring DAO . Here I am using MyEcplise IDE and Oracle 10g Database.
****************************************************************
****************************************************************
CREATE TABLE "CONTACTS" ( "ID" NUMBER(22,0) NOT NULL ENABLE, "FIRSTNAME" VARCHAR2(4000 CHAR), "LASTNAME" VARCHAR2(4000 CHAR), "CELL_NO" VARCHAR2(4000 CHAR), "EMAIL_ID" VARCHAR2(4000 CHAR), "WEBSITE" VARCHAR2(4000 CHAR), "BIRTHDATE" TIMESTAMP (6), "CREATED" VARCHAR2(255 CHAR), PRIMARY KEY ("ID") ENABLE ) /
*****************************************************************
<?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"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.Oracle10gDialect </property> <property name="connection.url"> jdbc:oracle:thin:@localhost:1521:xe </property> <property name="connection.username">venkat</property> <property name="connection.password">venkat</property> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="myeclipse.connection.profile">Spring_JDBC</property> <mapping resource="com/venkat/hibernate/Contacts.hbm.xml" /> </session-factory> </hibernate-configuration>
*********************************************************************************
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="file:src/hibernate.cfg.xml"> </property> </bean> <bean id="ContactsDAO" class="com.venkat.hibernate.ContactsDAO"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean></beans>
*******************************************************************************
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.venkat.hibernate.Contacts" table="CONTACTS" schema="VENKAT"> <id name="id" type="java.math.BigDecimal"> <column name="ID" precision="22" scale="0" /> <generator class="assigned" /> </id> <property name="firstname" type="java.lang.String"> <column name="FIRSTNAME" length="4000" /> </property> <property name="lastname" type="java.lang.String"> <column name="LASTNAME" length="4000" /> </property> <property name="cellNo" type="java.lang.String"> <column name="CELL_NO" length="4000" /> </property> <property name="emailId" type="java.lang.String"> <column name="EMAIL_ID" length="4000" /> </property> <property name="website" type="java.lang.String"> <column name="WEBSITE" length="4000" /> </property> <property name="birthdate" type="java.util.Date"> <column name="BIRTHDATE" length="7" /> </property> <property name="created" type="java.lang.String"> <column name="CREATED" /> </property> </class> </hibernate-mapping>
*************************************************************************package com.venkat.hibernate; import java.math.BigDecimal; import java.util.Iterator; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestSpringDAO { /** * @param args */ public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); ContactsDAO dao= context.getBean("ContactsDAO",ContactsDAO.class); Contacts contact=new Contacts(new BigDecimal(234)); dao.save(contact); List<Contacts> list=dao.findAll(); System.out.println("contacts Size "+list.size()); for (Iterator iterator = list.iterator(); iterator.hasNext();) { Contacts contacts = (Contacts) iterator.next(); System.out.println("contact ID is "+contacts.getId()); } } }******************************************************************************package com.venkat.hibernate; import java.util.List; import org.hibernate.LockMode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * A data access object (DAO) providing persistence and search support for * Contacts entities. Transaction control of the save(), update() and delete() * operations can directly support Spring container-managed transactions or they * can be augmented to handle user-managed Spring transactions. Each of these * methods provides additional information for how to configure it for the * desired type of transaction control. * * @see com.venkat.hibernate.Contacts * @author Venkat */ public class ContactsDAO extends HibernateDaoSupport { private static final Logger log = LoggerFactory .getLogger(ContactsDAO.class); protected void initDao() { // do nothing } public void save(Contacts transientInstance) { log.debug("saving Contacts instance"); try { getHibernateTemplate().save(transientInstance); log.debug("save successful"); } catch (RuntimeException re) { log.error("save failed", re); throw re; } } public void delete(Contacts persistentInstance) { log.debug("deleting Contacts instance"); try { getHibernateTemplate().delete(persistentInstance); log.debug("delete successful"); } catch (RuntimeException re) { log.error("delete failed", re); throw re; } } public Contacts findById(java.math.BigDecimal id) { log.debug("getting Contacts instance with id: " + id); try { Contacts instance = (Contacts) getHibernateTemplate().get( "com.venkat.hibernate.Contacts", id); return instance; } catch (RuntimeException re) { log.error("get failed", re); throw re; } } public List findByExample(Contacts instance) { log.debug("finding Contacts instance by example"); try { List results = getHibernateTemplate().findByExample(instance); log.debug("find by example successful, result size: " + results.size()); return results; } catch (RuntimeException re) { log.error("find by example failed", re); throw re; } } public List findByProperty(String propertyName, Object value) { log.debug("finding Contacts instance with property: " + propertyName + ", value: " + value); try { String queryString = "from Contacts as model where model." + propertyName + "= ?"; return getHibernateTemplate().find(queryString, value); } catch (RuntimeException re) { log.error("find by property name failed", re); throw re; } } public List<Contacts> findAll() { log.debug("finding all Contacts instances"); try { String queryString = "from Contacts"; return getHibernateTemplate().find(queryString); } catch (RuntimeException re) { log.error("find all failed", re); throw re; } } public Contacts merge(Contacts detachedInstance) { log.debug("merging Contacts instance"); try { Contacts result = (Contacts) getHibernateTemplate().merge( detachedInstance); log.debug("merge successful"); return result; } catch (RuntimeException re) { log.error("merge failed", re); throw re; } } public void attachDirty(Contacts instance) { log.debug("attaching dirty Contacts instance"); try { getHibernateTemplate().saveOrUpdate(instance); log.debug("attach successful"); } catch (RuntimeException re) { log.error("attach failed", re); throw re; } } public void attachClean(Contacts instance) { log.debug("attaching clean Contacts instance"); try { getHibernateTemplate().lock(instance, LockMode.NONE); log.debug("attach successful"); } catch (RuntimeException re) { log.error("attach failed", re); throw re; } } public static ContactsDAO getFromApplicationContext(ApplicationContext ctx) { return (ContactsDAO) ctx.getBean("ContactsDAO"); } }********************************************************************************package com.venkat.hibernate; import java.math.BigDecimal; import java.util.Date; /** * Contacts entity. @author MyEclipse Persistence Tools */ public class Contacts implements java.io.Serializable { // Fields private BigDecimal id; private String firstname; private String lastname; private String cellNo; private String emailId; private String website; private Date birthdate; private String created; // Constructors /** default constructor */ public Contacts() { } /** minimal constructor */ public Contacts(BigDecimal id) { this.id = id; } /** full constructor */ public Contacts(BigDecimal id, String firstname, String lastname, String cellNo, String emailId, String website, Date birthdate, String created) { this.id = id; this.firstname = firstname; this.lastname = lastname; this.cellNo = cellNo; this.emailId = emailId; this.website = website; this.birthdate = birthdate; this.created = created; } // Property accessors public BigDecimal getId() { return this.id; } public void setId(BigDecimal id) { this.id = id; } public String getFirstname() { return this.firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return this.lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public String getCellNo() { return this.cellNo; } public void setCellNo(String cellNo) { this.cellNo = cellNo; } public String getEmailId() { return this.emailId; } public void setEmailId(String emailId) { this.emailId = emailId; } public String getWebsite() { return this.website; } public void setWebsite(String website) { this.website = website; } public Date getBirthdate() { return this.birthdate; } public void setBirthdate(Date birthdate) { this.birthdate = birthdate; } public String getCreated() { return this.created; } public void setCreated(String created) { this.created = created; } }