例子是根据博友的例子改的。保留原作者名。并留以自用!
(项目:spring2.1 + struts1.2 + hibernate3.2 的文件上传下载,源码请下载附件)
1.1. 基类:扩展HibernateDaoSupport
扩展一下HibernateDaoSupport,可以添加自己的辅助方法,以使下面的泛型实现类代码更简洁清晰。
package com.ssh.core.dao.support;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
@SuppressWarnings("unchecked")
public class HibernateGenericDao extends HibernateDaoSupport {
//……
}
1.2. 接口:GenericDao
定义泛型接口:
package com.ssh.core.dao;
import java.io.Serializable;
import java.util.List;
public interface GenericDao<T> {
public void save(Object o);
void delete(Object o);
void deleteById(Serializable id);
public void update(Object o);
public void saveOrUpdate(Object o);
public T getById(Serializable id);
public List<T> findAll(Class<T> entityClass);
public List<T> findByExample(Object o);
//...
}
1.3. 实现:GenericDaoImpl
定义泛型类的实现:
package com.ssh.core.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.springframework.util.Assert;
import com.ssh.core.dao.GenericDao;
import com.ssh.core.dao.support.HibernateGenericDao;
@SuppressWarnings("unchecked")
public class GenericDaoImplHibernate<T> extends HibernateGenericDao implements GenericDao<T>{
protected Class<T> entityClass;
public GenericDaoImplHibernate() {
entityClass = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
protected Class<T> getEntityClass() {
return entityClass;
}
public List<T> findAll(Class<T> entityClass) {
return getHibernateTemplate().loadAll(entityClass);
}
public List<T> findAll(Class<T> entityClass, String orderBy,
boolean isAsc) {
Assert.hasText(orderBy);
if (isAsc)
return getHibernateTemplate().findByCriteria( DetachedCriteria.forClass(entityClass).
addOrder(Order.asc(orderBy)));
else
return getHibernateTemplate().findByCriteria(
DetachedCriteria.forClass(entityClass).
addOrder(Order.desc(orderBy)));
}
public List<T> findByExample(Object o) {
return getHibernateTemplate().findByExample(o);
}
public T getById(Serializable id) {
return (T)getHibernateTemplate().get(entityClass, id);
}
public void deleteById(Serializable id) {
delete(getById(id));
}
public void delete(Object o) {
getHibernateTemplate().delete(o);
}
public void save(Object o) {
getHibernateTemplate().save(o);
}
public void saveOrUpdate(Object o) {
getHibernateTemplate().saveOrUpdate(o);
}
public void update(Object o) {
getHibernateTemplate().update(o);
}
//其他方法自己加喏,以后有空再补完整
}
1.4. 一个实体的Dao例子
1:接口
package com.ssh.file.dao;
import com.ssh.core.dao.GenericDao;
import com.ssh.model.file.File;
public interface FileDao extends GenericDao<File> {
}
2:类
package com.ssh.file.dao.impl;
import com.ssh.core.dao.impl.GenericDaoImplHibernate;
import com.ssh.file.dao.FileDao;
import com.ssh.model.file.File;
public class FileDaoImpl extends GenericDaoImplHibernate<File> implements FileDao{
//如果需要的方法在GenericDaoImplHibernate中都有的话,这里是可以不写任何代码的
}
分享到:
相关推荐
SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】
NULL 博文链接:https://wxinpeng.iteye.com/blog/1162157
springboot2.0多数据源集成hibernate配置hibernateDaoSupport, dao层继承hibernateDaoSupport, 不使用jpa方式。
java基于SSH框架的学生成绩管理系统源码。要求: (1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩管理”功能 (5) 实现分页功能 目的...
hibernateDaoSupport类的详解!
MyEclipse 2014 使用hibernate3 生成数据库实体类 和 xml映射文件
HibernateDaoSupport 类的jar HibernateDao 的jar
HibernateDaoSupport分页.txt
.相同点:在applicationConext.xml中 ... HibernateDaoSupport: 在impl中要调用的方法要getHibernateTemplate().delete(user); UserDaoHiberateImpl: 在impl中要调用的方法要hibernateTemplate.save(user);
第一层:HibernateGenericDao,基于spring的HibernateDaoSupport,但加入了分页函数与各种Finder函数,并使用泛型避免了返回值强制类型转换。 第二层:HibernateEntityDao,基于HibernateGenericDao,用泛型声明Dao...
HibernateDaoSupport详解 HibernateDaoSupport详解
HibernateDaoSupport的使用
NULL 博文链接:https://godit.iteye.com/blog/1716651
NULL 博文链接:https://yizhilong28.iteye.com/blog/818989
Spring hibernate3. HibernateDaoSupport 源码
数据库访问层:将对持久层数据库的基本添加,修改,查找等操作提取到BaseDAO中,BaseDAO继承Spring的HibernateDaoSupport,各模块DAO继承BaseDAO实现复杂数据访问。由IOC容器DAO的代理实例注入到业务组件中,业务组件...
ssh环境,通过action触发一个多线程任务,每个任务调用一个继承HibernateDaoSupport的service的方法,现在要每个线程都绑定一个新的hibernate session
6.5 Spring整合Hibernate 6.6 Spring提供的DAO支持 6.5.2 管理Hibernate的SessionFactory 6.5.3 使用HibernateTemplate 6.5.4 使用HibernateCallBack 6.5.6 使用IoC容器组装...6.5.8了解继承自HibernateDaoSupport类DAO
HibernateDaoSupport提供了基于AOP事务的自动处理,程序员完全可以不用理会事务的开始与提交,它会自动完成SessionFactory的注入和事务的注入。 24.3 Spring对Hibernate的简化 24.3.5 HibernateDaoSupport ...
自己总结了比较新的一版ssh框架,可以运行,数据库用的mysql,heibernate4没有了HibernateDaoSupport,自己写Dao