Saturday, May 12, 2012

Hibernate With Spring DAO

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; } }

No comments:

Post a Comment