HibernateDaoSupport的应用

 

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
{
 public Object get(final Class entity, final Serializable id)
 {
  return getHibernateTemplate().get(entity, id);
 }

 public Object load(final Class entity, final Serializable id)
 {
  return getHibernateTemplate().load(entity, id);
 }

 public void delete(final Object entity)
 {
  getHibernateTemplate().delete(entity);
 }

 public void save(final Object entity)
 {
  getHibernateTemplate().save(entity);

 }

 public void update(final Object entity)
 {
  getHibernateTemplate().update(entity);

 }

 public List findByHql(String Hql)
 {
  return getHibernateTemplate().find(Hql);
 }

 public void delBySql(String sqlStr)
 {
  final String sql = sqlStr;
  getHibernateTemplate().execute(new HibernateCallback()
  {
   public Object doInHibernate(Session session) throws HibernateException, SQLException
   {
    session.connection().createStatement().executeUpdate(sql);
    return null;
   }
  });
 }
}

 

ClassesDaoImpl

public class ClassesDaoImpl extends BaseDaoHibernateImpl implements IClassDao
{

 public List<Classes> GetAllClasses()
 {
  String hql = "from Classes";
  return super.findByHql(hql);
 }

 public Classes GetModel(int id)
 {
  return (Classes) super.get(Classes.class, id);
 }
}

 

ManagerDaoImpl

public class ManagerDaoImpl extends BaseDaoHibernateImpl implements IManagerDao
{
 public Manager FindManager(String uname, String pwd)
 {
  Manager m = null;
  Session session = null;
  Transaction tran = null;
  try
  {
   session = super.getSession();
   tran = session.beginTransaction();
   String hql = "from Manager m where m.loginName = ? and m.passwd = ?";
   Query query = session.createQuery(hql);
   query.setString(0, uname);
   query.setString(1, pwd);
   m = (Manager) query.uniqueResult();
   tran.commit();
  }
  catch (Exception e)
  {
   e.printStackTrace();
   tran.rollback();
  }
  finally
  {
   this.getSession().close();
  }
  return m;
 }

}

 

 

Spring的bean.xml注入

<!-- 整合hibernate -->
 <bean id="dataSource"
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost:3306/stuinfo" />
  <property name="username" value="root" />
  <property name="password" value="root" />
 </bean>
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configLocation">
   <value>classpath:hibernate.cfg.xml</value>
  </property>
 </bean>

 <!-- DAO的配置,通过Spring注入sessionFactory -->
 <bean id="classDao" class="com.xy.dao.impl.ClassesDaoImpl">
  <property name="sessionFactory" ref="sessionFactory" />
 </bean>
 <bean id="managerDao" class="com.xy.dao.impl.ManagerDaoImpl">
  <property name="sessionFactory" ref="sessionFactory" />
 </bean>

 

为什么要注入sessionFactory呢?

 

继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport,spring在初始化容器的时候会对这个对象作一个check, 看下HibernateDaoSupport源码中的checkDaoConfig()方法 就清楚啦:

protected final void checkDaoConfig()
{      
    if (this.hibernateTemplate == null)
    {      
        throw new IllegalArgumentException
            ("'sessionFactory' or 'hibernateTemplate' is required");    
    }      

时间: 2024-10-03 07:09:25

HibernateDaoSupport的应用的相关文章

子类继承HibernateDaoSupport后如何注入SessionFactory

子类继承HibernateDaoSupport后,由于HibernateDaoSupport,setSessionFactory是使用final修飾的,無法重寫,沒有辦法使用註解的方式注入sessionFactroy public final void setSessionFactory(SessionFactory sessionFactory) {         if (this.hibernateTemplate == null || sessionFactory != this.hib

关于 NHibernate 关于继承 HibernateDaoSupport

问题描述 如果继承了HibernateDaoSupport类那么如何保证一个线程使用一个session?如果使用HibernateDaoSupport中的属性Session他是会重新生成一个新的ISession对象那么是否需要进行释放?还是他内部进行管理?

hibernatedaosupport-ssh2关于继承hibernateDaoSupport怎么执行更改操作

问题描述 ssh2关于继承hibernateDaoSupport怎么执行更改操作 impl类继承的HibernateDaoSupport,简单的增删改查我知道可以这样getHibernateTemplate().save(book);....但我要写sql语句执行更改,如:sql="update book set state=1 where bid=?";我怎么执行啊,this.getSession().saveOrUpdate(arg0, arg1);这样么,参数怎么给呢?

BaseDAOHibernate extends HibernateDaoSupport,在BaseDAOHibernate有个方法原理没弄明白,大神们帮帮忙

问题描述 SSH框架中,BaseDAOHibernateextendsHibernateDaoSupport,并且对HibernateDaoSupport中常用的方法做了进一步的封装,要用时只需调用BaseDAOHibernate中的方法即可,但是BaseDAOHibernate中有这样一个方法只会用不明白什么原理,/***根据Hibernate的本地sql调用,查询数据结果*支持查询整个表所有的字段{t.*}声明实体entities,和个别几个字段(声明标量scalaries)**@param

spring+hibernate hibernateDaoSupport 的事物管理

问题描述 hibernateDaoSupport 的事物管理hibernateDaoSupport 类来自动创建和提交的吗~!为什么我在用hibernateDaoSupport 对数据库进行增删改没有注入事物,也可以年持久化数据. 解决方案 hibernateDaoSupport 默认是可以不用管理事务和关闭session的. 它可以自动处理. 如果对数据库的操作失败也会回滚到原来的状态. 但我们也可以手动出来事务.. 但session还是不需要我们去关闭的. 如果关闭的session的话会抛s

spring HibernateDaoSupport 使用

问题描述 spring 和hibernate继承,dao继承了HibernateDaoSupport ,发现save和get 方法都好使,但find方法就抛异常,不知道是为什么,如果出错的话应该都出错呀,不能有的时候出错,有的时候不出吧. StudentEntity entity = (StudentEntity) dao.getHibernateTemplate().get( StudentEntity.class, 1); StudentEntity ent = new StudentEnt

实现分页的疑问,hibernatedaosupport

问题描述 List<T> list = (List<T>)this.getSession().createQuery(hql).setFirstResult(start).setMaxResults(number).list(); List<T> list = (List<T>)this.getHibernateTemplate().executeFind(new HibernateCallback() {@Overridepublic Object doI

从应用示例来认识Tiny框架

呵呵,Tiny框架神龙见首不见尾已经许多时间了,里面只看到一些几个孤零零的子框架.今天就通过Tiny开发示例的方式来重点展示一下利用Tiny框架是如何开发的. HelloWorld 首先从这个神一样的示例写起. 服务开发: 方式1:注解方式 ? 1 2 3 4 5 6 7 8 9 10 11 12 @ServiceComponent() public class HelloWorldAnnotationService{     @ServiceMethod(serviceId = "sayHel

SSH整合问题实现DAO接口出现的问题

问题描述 SSH整合问题实现DAO接口出现的问题 package com.integration.dao; import java.util.List; import com.integration.entity.User; import org.hibernate.Query; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class UserDAOImpl extends Hiber