一、采用Spring的IOC和DI实现持久
1、定义BaseDao接口基本服务类
package com.hanz.dao.base;
import java.io.Serializable;
import java.util.List;
/**
* <p>
* Title: 基础DAO接口
* </p>
* <p>
* Description:
* </p>
*
* @author 曹彦彬
* @version 1.0.0.20080703
*/
public interface BaseDao {
/**
* 根据类和id找到pojo对象
*
* @param pojoClass
* Class pojo的类
* @param id
* String 唯一标识
* @return Object pojo对象
* @throws RuntimeException
*/
public Object loadById(Class pojoClass, Serializable id)
throws RuntimeException;
/**
* 从数据库查询相应列表
*
* @param ql
* 查询语言
* @return Object pojo对象
* @throws RuntimeException
*/
public List<Object> find(String hql) throws RuntimeException;
/**
* 创建新对象
*
* @param pojo
* Object 新对象
* @throws RuntimeException
*/
public void save(Object pojo) throws RuntimeException;
/**
* 更新已有对象
*
* @param pojo
* Object 需要更新的对象
* @throws RuntimeException
*/
public void update(Object pojo) throws RuntimeException;
/**
* 插入或更新已有对象
*
* @param pojo
* Object 需要插入或更新的对象
* @throws RuntimeException
*/
public void insertOrUpdate(Object pojo) throws RuntimeException;
/**
* 删除对象
*
* @param pojo
* Object 需要删除的对象
* @throws RuntimeException
*/
public void delete(Object pojo) throws RuntimeException;
/**
* 删除对象,根据id
*
* @param pojoClass
* Class 需要删除的对象类
* @param id
* String 唯一标识
* @throws RuntimeException
*/
public void delete(Class pojoClass, Serializable id)
throws RuntimeException;
/**
* 删除集合中的全部对象
*
* @param pojoName
* pojo映射名
* @param ids
* 要删除的ID集合
* @throws RuntimeException
*/
public void deleteAll(Class pojoName, Integer[] ids) throws RuntimeException;
/** */
/**
* 分页查询
*
* @param hql
* 查询的条件
* @param offset
* 开始记录
* @param length
* 一次查询几条记录
* @return
*/
public List queryForPage(final String hql, final int offset,
final int length) throws RuntimeException;
/**
* 分页查询
*
* @param hql
* 查询的条件
* @return
*/
public List queryForPage(final String hql) throws RuntimeException;
/** */
/**
* 查询所有记录数
*
* @param hql
* 查询的条件
* @return 总记录数
*/
public int getAllRowCount(String hql) throws RuntimeException;
}
2、完成实现类(内部注入HibernateTemplate)
package com.hanz.dao.base.imp;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;
import com.hanz.dao.base.BaseDao;
/**
* <p>
* Title: 基础DAO实现类
* </p>
* <p>
* Description:
* </p>
*
* @author 曹彦彬
* @version 1.0.0.20080703
*/
@Component("baseDao")
public class BaseDaoImp implements BaseDao {
protected HibernateTemplate hibernateTemplate;
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#delete(java.lang.Object)
*/
public void delete(Object pojo) throws RuntimeException {
hibernateTemplate.delete(pojo);
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#delete(java.lang.Class,
* java.io.Serializable)
*/
@SuppressWarnings("unchecked")
public void delete(Class pojoClass, Serializable id)
throws RuntimeException {
hibernateTemplate.delete(loadById(pojoClass, id));
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#find(java.lang.String)
*/
@SuppressWarnings("unchecked")
public List find(String hql) throws RuntimeException {
return hibernateTemplate.find(hql);
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#save(java.lang.Object)
*/
public void save(Object pojo) throws RuntimeException {
hibernateTemplate.save(pojo);
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#loadById(java.lang.Class,
* java.io.Serializable)
*/
@SuppressWarnings("unchecked")
public Object loadById(Class pojoClass, Serializable id)
throws RuntimeException {
return hibernateTemplate.get(pojoClass, id);
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#update(java.lang.Object)
*/
public void update(Object pojo) throws RuntimeException {
hibernateTemplate.update(pojo);
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#insertOrUpdate(java.lang.Object)
*/
public void insertOrUpdate(Object pojo) throws RuntimeException {
hibernateTemplate.saveOrUpdate(pojo);
}
/*
* (non-Javadoc)
*
* @see com.hanz.dao.base.dao.BaseDao#deleteAll(java.lang.Class,
* java.lang.Long[])
*/
@SuppressWarnings("unchecked")
public void deleteAll(final Class pojoName, final Integer[] ids)
throws RuntimeException {
hibernateTemplate.execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query deleteQuery = session.createQuery("delete from "
+ pojoName.getName() + " where id in(:ids)");
deleteQuery.setParameterList("ids", ids);
int dels = deleteQuery.executeUpdate();
return dels;
}
});
}
/**
* 分页查询
*
* @param hql
* 查询的条件
* @param offset
* 开始记录
* @param length
* 一次查询几条记录
* @return
*/
public List queryForPage(final String hql, final int offset,
final int length) throws RuntimeException {
List list = hibernateTemplate.executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}
/**
* 查询所有记录数
*
* @return 总记录数
*/
public int getAllRowCount(String hql) throws RuntimeException {
return hibernateTemplate.find(hql).size();
}
@Override
public List queryForPage(final String hql) throws RuntimeException {
List list = hibernateTemplate.executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
List list = query.list();
return list;
}
});
return list;
}
}
3、编写自定义接口
package com.hanz.dao;
import com.hanz.dao.base.BaseDao;
import com.hanz.domain.User;
public interface UserDAO extends BaseDao{
public User getUser(User user) throws Exception;
}
4、实现自定义接口类
package com.hanz.dao.imp;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.stereotype.Component;
import com.hanz.dao.UserDAO;
import com.hanz.dao.base.imp.BaseDaoImp;
import com.hanz.domain.User;
@Component("userDao")
public class UserDAOImp extends BaseDaoImp implements UserDAO {
/**
* 自定义实现登录的方法
*/
@Override
public User getUser(final User user) throws Exception {
List list = hibernateTemplate.executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
String hql = "from User as user where user.user_code=? and user.pwd=? and user.popedom=? ";
Query query = session.createQuery(hql);
query.setString(0, user.getUser_code());
query.setString(1, user.getPwd());
query.setInteger(2, user.getPopedom().getId());
List list = query.list();
return list;
}
});
if (list.size() > 0)
return (User) list.get(0);
else
return null;
}
}
分享到:
相关推荐
项目配置:Hibernate3.3.2+Spring3.0+Struts2.2.3 + ext3.4.0,真实项目实现,项目中可参考经典权限设计,通用数据录入,批量数据处理(poi),统一的JSON格式封装,灵活的组合模式设计,EXTJS面向组件编程参考......
在本项目中,我们探讨的是如何将三个主流的Java企业级框架——Spring 3.0、Hibernate 4.0和Spring MVC与JavaScript前端框架ExtJS 4进行深度整合,以构建一个高效、灵活且功能丰富的Web应用。这个整合旨在提供一个...
在本项目中,我们探讨的是一个基于Web的简单图书管理系统,该系统采用了经典的Java企业级开发框架:ExtJS 3.0、Spring、Hibernate以及Struts。这些技术的结合为开发高效、可维护的Web应用提供了强大的支持。下面将...
DWR2+EXTJS2.2+Hibernate3.3+Spring2+Acegi 做的综合管理系统,数据库采用MYSQL,分层清晰,业务相对复杂,是学习框架不可多得的项目。这个是分卷,同时下载2.3.4部分
DWR2+EXTJS2.2+Hibernate3.3+Spring2+Acegi 做的综合管理系统,数据库采用MYSQL,分层清晰,业务相对复杂,是学习框架不可多得的项目。
DWR2+EXTJS2.2+Hibernate3.3+Spring2+Acegi 做的综合管理系统,数据库采用MYSQL,分层清晰,业务相对复杂,是学习框架不可多得的项目。
ExtJS 3.0 和 Struts2 是两个在Web开发领域广泛应用的开源框架。ExtJS 是一个用于构建富客户端(Rich Internet Applications,RIA)的JavaScript库,它提供了丰富的组件库和用户界面,使得开发者可以创建出具有桌面...
在“extjs+spring+struts+hibernate”整合中,通常会利用Spring作为核心框架,管理整个应用的依赖和事务;Struts负责处理HTTP请求,并转发到相应的业务逻辑;Hibernate则负责对象与数据库之间的映射,实现数据的持久...
综上所述,这个“DWR2+EXTJS2.2+Hibernate3.3+Spring2+Acegi”综合管理系统结合了这些技术的优势,构建了一个分层清晰、业务复杂的系统。DWR2和EXTJS2.2负责前端交互和用户界面,提供流畅的用户体验;Hibernate3.3...
总结起来,"DWR+extjs+spring+hibernate"的组合是现代Web应用开发的一个强大工具集,它能够帮助开发者快速构建出交互性强、性能优异的企业级应用。通过深入理解和熟练掌握这四个技术,可以显著提升开发者的技能水平...
在"Hibernate+Spring+Struts2+ExtJS整合开发实例"中,开发者通常会利用这些框架的协同工作来实现CRUD(Create, Read, Update, Delete)操作,这是数据库应用的基本功能: 1. **创建(Create)**: 用户通过ExtJS的...
将jbpm4.0、EXT3.0、Spring和Hibernate整合在一起,可以构建出一个功能强大的业务流程管理系统。Spring作为整体架构的胶水,管理各组件的生命周期;Hibernate负责数据持久化,处理与数据库的交互;jbpm4.0则处理业务...
strut2+hibernate+spring+extjs3.0+excel 动态加载grid 数据导出excel,导入excel datasource自己修改你自己的数据源,数据库中的表可见实体类创建,或者自己修改实体类
【标题】"Struts2(json-plugin) + Spring2 + ExtJS2.2 开源网络硬盘系统"是一个基于Java技术栈的开源项目,它利用了Struts2框架的json-plugin插件,Spring2作为服务层管理和依赖注入框架,以及ExtJS2.2作为前端展示...
采用了struts2.0,spring2.2,ibatis,quartz,extjs3.0 实现了关于短信的调度框架,对接收人维护,动态添加每日短信数据,编写短信模版,最后通过quartz定时发送,因为短信接口收费所以不提供,需要jar包自己下载,...
SSH框架,全称为Spring、Struts2和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,数据库持久化,以及强大的前端展示能力,使得开发者能高效地构建...
该项目是用EXTJS+Struts2,是实现EXTJS与后台数据交互的例子; 我从网上找的EXTJS的相关例子程序,自己在本地eclipse中创建成了完整项目,修改了代码BUG和浏览器兼容问题; 现在将完整的项目代码打包分享,对于想...