BaseDaoHibernateImpl
package com.xy.dao.impl;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseDaoHibernateImpl extends HibernateDaoSupport
{
<wbr>public Object get(final Class entity, final Serializable id)<br><wbr>{<br><wbr><wbr>return getHibernateTemplate().get(entity, id);<br><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr>public Object load(final Class entity, final Serializable id)<br><wbr>{<br><wbr><wbr>return getHibernateTemplate().load(entity, id);<br><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr>public void delete(final Object entity)<br><wbr>{<br><wbr><wbr>getHibernateTemplate().delete(entity);<br><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr>public void save(final Object entity)<br><wbr>{<br><wbr><wbr>getHibernateTemplate().save(entity);</wbr></wbr></wbr></wbr>
<wbr>}</wbr>
<wbr>public void update(final Object entity)<br><wbr>{<br><wbr><wbr>getHibernateTemplate().update(entity);</wbr></wbr></wbr></wbr>
<wbr>}</wbr>
<wbr>public List findByHql(String Hql)<br><wbr>{<br><wbr><wbr>return getHibernateTemplate().find(Hql);<br><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr>public void delBySql(String sqlStr)<br><wbr>{<br><wbr><wbr>final String sql = sqlStr;<br><wbr><wbr>getHibernateTemplate().execute(new HibernateCallback()<br><wbr><wbr>{<br><wbr><wbr><wbr>public Object doInHibernate(Session session) throws HibernateException, SQLException<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr>session.connection().createStatement().executeUpdate(sql);<br><wbr><wbr><wbr><wbr>return null;<br><wbr><wbr><wbr>}<br><wbr><wbr>});<br><wbr>}<br> }<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
ClassesDaoImpl
public class ClassesDaoImpl extends BaseDaoHibernateImpl implements IClassDao
{
<wbr>public List<Classes> GetAllClasses()<br><wbr>{<br><wbr><wbr>String hql = "from Classes";<br><wbr><wbr>return <strong>super</strong>.findByHql(hql);<br><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>public Classes GetModel(int id)<br><wbr>{<br><wbr><wbr>return (Classes) <strong>super</strong>.get(Classes.class, id);<br><wbr>}<br> }</wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
ManagerDaoImpl
public class ManagerDaoImpl extends BaseDaoHibernateImpl implements IManagerDao
{
<wbr>public Manager FindManager(String uname, String pwd)<br><wbr>{<br><wbr><wbr>Manager m = null;<br><wbr><wbr>Session session = null;<br><wbr><wbr>Transaction tran = null;<br><wbr><wbr>try<br><wbr><wbr>{<br><wbr><wbr><wbr><strong>session = super.getSession();</strong><br><wbr><wbr><wbr>tran = session.beginTransaction();<br><wbr><wbr><wbr>String hql = "from Manager m where m.loginName = ? and m.passwd = ?";<br><wbr><wbr><wbr>Query query = session.createQuery(hql);<br><wbr><wbr><wbr>query.setString(0, uname);<br><wbr><wbr><wbr>query.setString(1, pwd);<br><wbr><wbr><wbr>m = (Manager) query.uniqueResult();<br><wbr><wbr><wbr>tran.commit();<br><wbr><wbr>}<br><wbr><wbr>catch (Exception e)<br><wbr><wbr>{<br><wbr><wbr><wbr>e.printStackTrace();<br><wbr><wbr><wbr>tran.rollback();<br><wbr><wbr>}<br><wbr><wbr>finally<br><wbr><wbr>{<br><wbr><wbr><wbr>this.getSession().close();<br><wbr><wbr>}<br><wbr><wbr>return m;<br><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
}
<wbr></wbr>
<wbr></wbr>
Spring的bean.xml注入
<!-- 整合hibernate -->
<wbr><bean id="dataSource"<br><wbr><wbr>class="org.springframework.jdbc.datasource.DriverManagerDataSource"><br><wbr><wbr><property name="driverClassName" value="com.mysql.jdbc.Driver" /><br><wbr><wbr><property name="url" value="jdbc:mysql://localhost:3306/stuinfo" /><br><wbr><wbr><property name="username" value="root" /><br><wbr><wbr><property name="password" value="root" /><br><wbr></bean><br><wbr><bean id="sessionFactory"<br><wbr><wbr>class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><br><wbr><wbr><property name="dataSource" ref="dataSource" /><br><wbr><wbr><property name="configLocation"><br><wbr><wbr><wbr><value>classpath:hibernate.cfg.xml</value><br><wbr><wbr></property><br><wbr></bean></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><!-- DAO的配置,通过Spring注入sessionFactory --><br><wbr><bean id="classDao" class="com.xy.dao.impl.ClassesDaoImpl"><br><wbr><wbr><strong><property name="sessionFactory" ref="sessionFactory" /></strong><br><wbr></bean><br><wbr><bean id="managerDao" class="com.xy.dao.impl.ManagerDaoImpl"><br><wbr><wbr><strong><property name="sessionFactory" ref="sessionFactory" /></strong><br><wbr></bean></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
为什么要注入sessionFactory呢?
<wbr></wbr>
继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport,spring在初始化容器的时候会对这个对象作一个check, 看下HibernateDaoSupport源码中的checkDaoConfig()方法 就清楚啦:
protected final void checkDaoConfig()
{<wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr> if (this.hibernateTemplate == null)<br><wbr><wbr><wbr> {<wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> throw new IllegalArgumentException<wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ("'sessionFactory' or 'hibernateTemplate' is required");<wbr><wbr><wbr><wbr><br><wbr><wbr><wbr> }<wbr><wbr><wbr><wbr><wbr><wbr><br>
}<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>