- 浏览: 483889 次
- 性别:
- 来自: 武汉
最新评论
-
zyzyzy123:
请问有工程吗,我现在正在实现打电话的功能,但是一直不通,怀疑是 ...
实用的java 串口通信程序 -
wuhaitong:
引用[img][/img][*][url][/url] ...
jbpm -
迷糊_le:
maven命令, 蛮好的,谢谢
maven eclipse -
Wuaner:
不错的文章 , 谢谢分享!
Hadoop -
yuqihengsheng:
strong 很细
HighLighter
其中包括4个基类 BaseDao.java, BaseDAOHibernate.java,BaseManager.java,BaseManagerImpl.java
1. dao接口基类
- /**
- * BaseDAO.java
- *
- *
- */
- package com.easou.ad.dao;
- import java.util.HashMap;
- import java.util.List;
- public interface BaseDAO<E> {
- /**
- * 根据主键获得实体
- *
- * @param id 实体主键
- * @return BaseEntity
- */
- E getEntity(Long id);
- /**
- * 获得所有实体
- *
- * @return List
- */
- List<E> getAllEntity();
- /**
- * 保存实体
- *
- * @param entity pojo instance
- */
- void saveEntity(E entity);
- /**
- * 根据主键删除实体
- *
- * @param id 实体主键
- */
- void removeEntity(Long id);
- public List<E> search(HashMap con ,int page,int rowsPerPage);
- public List<E> search(HashMap con);
- }
/** * BaseDAO.java * * */ package com.easou.ad.dao; import java.util.HashMap; import java.util.List; public interface BaseDAO<E> { /** * 根据主键获得实体 * * @param id 实体主键 * @return BaseEntity */ E getEntity(Long id); /** * 获得所有实体 * * @return List */ List<E> getAllEntity(); /** * 保存实体 * * @param entity pojo instance */ void saveEntity(E entity); /** * 根据主键删除实体 * * @param id 实体主键 */ void removeEntity(Long id); public List<E> search(HashMap con ,int page,int rowsPerPage); public List<E> search(HashMap con); }
2. dao实现类
- /**
- * BaseDAOHibernate.java
- *
- *Copyright 2007 easou, Inc. All Rights Reserved.
- */
- package com.easou.ad.dao.hibernate;
- import java.lang.reflect.ParameterizedType;
- import java.util.List;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.hibernate.HibernateException;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import com.easou.framework.util.PageList;
- import com.easou.ad.dao.BaseDAO;
- public abstract class BaseDAOHibernate<E> extends HibernateDaoSupport implements
- BaseDAO<E> {
- protected final Log log = LogFactory.getLog(this.getClass().getName());
- protected Class<E> clazz;
- public BaseDAOHibernate() {
- this.clazz =(Class<E>)((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
- }
- /**
- * 根据主键获得实体
- *
- * @param id 实体主键
- * @return 实体对象
- */
- @SuppressWarnings("unchecked")
- public final E getEntity(final Long id) {
- return (E)getHibernateTemplate().get(clazz, id);
- }
- /**
- * 获得所有实体
- *
- * @return List
- */
- @SuppressWarnings("unchecked")
- public final List<E> getAllEntity() {
- PageList result = new PageList();
- List l = getHibernateTemplate().loadAll(clazz);
- result.addAll(l);
- result.setCurrentPage(1);
- result.setPageCount(1);
- result.setTotalRowCount(l.size());
- return result;
- }
- /**
- * 保存实体
- *
- * @param entity 实体对象
- */
- public final void saveEntity(final E entity) {
- getHibernateTemplate().saveOrUpdate(entity);
- }
- /**
- * 根据主键删除实体
- *
- * @param id 实体主键
- */
- public final void removeEntity(final Long id) {
- Object o = getEntity(id);
- if (null != o) {
- getHibernateTemplate().delete(o);
- }
- }
- /**
- * 执行批量更新和删除操作的HQL
- *
- * @param sql hql语句
- * @return PageList
- */
- @SuppressWarnings("unchecked")
- protected final List<E> executeHQL(final String sql) {
- Session session = null;
- List<E> ret = null;
- try {
- log.info(sql);
- session = this.getSession();
- if (sql.toUpperCase().startsWith("DELETE")
- || sql.toUpperCase().startsWith("UPDATE")) {
- session.createQuery(sql).executeUpdate();
- } else {
- ret = session.createQuery(sql).list();
- }
- } catch (HibernateException e) {
- log.error("executeHQL() error:" + sql, e);
- throw convertHibernateAccessException(e);
- } finally {
- this.releaseSession(session);
- }
- return ret;
- }
- /**
- * 执行分页查询
- *
- * @param selectField HQL语句中,SELECT 的内容(如果设置了此参数值,则sql参数中不可带SELCT语句部分)
- * @param countField HQL语句中,count 的内容
- * @param sql HQL语句
- * @param page 第几页
- * @param rowsPerPage 每页记录数
- * @return PageList
- */
- @SuppressWarnings("unchecked")
- protected final List<E> pageListQuery(final String selectField,
- String countField, String sql, int page, int rowsPerPage) {
- PageList result = new PageList();
- Session session = null;
- try {
- session = this.getSession();
- // 预留count的sql语句
- String countSql = sql.substring(sql.toUpperCase().indexOf("FROM"));
- // 设置返回的列,进行查询
- if (null != selectField) {
- sql = "SELECT " + selectField + sql;
- }
- if (page <= 0) {
- page = 1; // page最小为1
- }
- log.debug("query sql:" + sql);
- Query q = session.createQuery(sql);
- if (rowsPerPage > 0) { // rowsPerPage的值是0或-1时,都返回全部结果集
- q.setFirstResult(rowsPerPage * (page - 1));
- q.setMaxResults(rowsPerPage);
- }
- result.addAll(q.list());
- // 设置分页查询的列
- if (null == countField) {
- countField = "*";
- }
- int rowsCount = result.size();
- if (rowsPerPage > 1 && rowsCount > 0) {
- // 每页记录数大于1且结果集大于0才计算分页信息,否则当前页记录数就作为总的记录数
- // TODO 解决page值过大,可能导致rowsCount为0的问题
- countSql = "select count(" + countField + ") " + countSql;
- // 计算总记录数时,消除 Order by语句,提高性能
- int oPos = countSql.toUpperCase().indexOf("ORDER BY");
- if (oPos > 0) {
- countSql = countSql.substring(0, oPos);
- }
- rowsCount = ((Integer) session.createQuery(countSql).iterate().next()).intValue();
- }
- if (0 == rowsCount) {
- page = 0;
- }
- if (rowsPerPage < 0) {
- page = 1;
- rowsPerPage = rowsCount;
- }
- result.setCurrentPage(page);
- result.setTotalRowCount(rowsCount);
- result.calcPageCount(rowsPerPage);
- } catch (HibernateException e) {
- log.error("pageListQuery() error:" + sql, e);
- throw convertHibernateAccessException(e);
- } finally {
- this.releaseSession(session);
- }
- return result;
- }
- /**
- * 执行分页查询
- *
- * @param selectField HQL语句中,SELECT 的内容(如果设置了此参数值,则sql参数中不可带SELCT语句部分)
- * @param sql HQL语句
- * @param page 第几页
- * @param rowsPerPage 每页记录数
- * @param totalRowCount HQL语句获得的总记录数
- * @return PageList
- */
- @SuppressWarnings("unchecked")
- protected final PageList pageListQuery(final String selectField,
- String sql, int page, int rowsPerPage, final int totalRowCount) {
- PageList result = new PageList();
- Session session = null;
- try {
- session = this.getSession();
- // 设置返回的列,进行查询
- if (null != selectField) {
- sql = "SELECT " + selectField + sql;
- }
- if (page <= 0) {
- page = 1; // page最小为1
- }
- Query q = session.createQuery(sql);
- if (rowsPerPage > 0) { // rowsPerPage的值是0或-1时,都返回全部结果集
- q.setFirstResult(rowsPerPage * (page - 1));
- q.setMaxResults(rowsPerPage);
- }
- result.addAll(q.list());
- if (0 == totalRowCount) {
- page = 0;
- }
- if (rowsPerPage < 0) {
- page = 1;
- rowsPerPage = totalRowCount;
- }
- result.setCurrentPage(page);
- result.setTotalRowCount(totalRowCount);
- result.calcPageCount(rowsPerPage);
- } catch (HibernateException e) {
- log.error("pageListQuery() error:" + sql, e);
- throw convertHibernateAccessException(e);
- } finally {
- this.releaseSession(session);
- }
- return result;
- }
- /**
- * 执行分页查询
- *
- * @param sql HQL语句
- * @param page 第几页
- * @param rowsPerPage 每页记录数
- * @param totalRowCount HQL语句获得的总记录数
- * @return PageList
- */
- protected final PageList pageListQuery(final String sql, final int page,
- final int rowsPerPage, final int totalRowCount) {
- return pageListQuery(null, sql, page, rowsPerPage, totalRowCount);
- }
- /**
- * 执行分页查询
- *
- * @param sql HQL语句
- * @param rowsPerPage 每页记录数
- * @param page 第几页
- * @return PageList
- * @throws HibernateException hibernate 异常
- */
- protected List<E> pageListQuery(final String sql, final int page,
- final int rowsPerPage) throws HibernateException {
- return pageListQuery(null, null, sql, page, rowsPerPage);
- }
- /**
- * 执行分页查询
- *
- * @param countField HQL语句中,count 的内容
- * @param sql HQL语句
- * @param rowsPerPage 每页记录数
- * @param page 第几页
- * @return PageList
- * @throws HibernateException hibernate 异常
- */
- protected List pageListQuery(final String countField, final String sql,
- final int page, final int rowsPerPage) throws HibernateException {
- return pageListQuery(null, countField, sql, page, rowsPerPage);
- }
- /**
- * 计算HQL查询的返回记录数
- *
- * @param sql 查询语句
- * @param countField count语句操作的字段
- * @return 记录数
- */
- protected int countHQL(String sql, String countField) {
- int rowsCount = 0;
- Session session = null;
- try {
- session = this.getSession();
- if (null == countField) {
- countField = "*";
- }
- sql = "select count(" + countField + ") " + sql;
- rowsCount = ((Integer) session.createQuery(sql).iterate().next())
- .intValue();
- } catch (HibernateException e) {
- log.error("countHQL() error:" + sql, e);
- throw convertHibernateAccessException(e);
- } finally {
- this.releaseSession(session);
- }
- return rowsCount;
- }
- /**
- * 计算HQL查询的返回记录数
- *
- * @param sql 查询语句
- * @return 记录数
- */
- protected int countHQL(String sql) {
- return countHQL(sql, null);
- }
- }
/** * BaseDAOHibernate.java * *Copyright 2007 easou, Inc. All Rights Reserved. */ package com.easou.ad.dao.hibernate; import java.lang.reflect.ParameterizedType; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.easou.framework.util.PageList; import com.easou.ad.dao.BaseDAO; public abstract class BaseDAOHibernate<E> extends HibernateDaoSupport implements BaseDAO<E> { protected final Log log = LogFactory.getLog(this.getClass().getName()); protected Class<E> clazz; public BaseDAOHibernate() { this.clazz =(Class<E>)((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; } /** * 根据主键获得实体 * * @param id 实体主键 * @return 实体对象 */ @SuppressWarnings("unchecked") public final E getEntity(final Long id) { return (E)getHibernateTemplate().get(clazz, id); } /** * 获得所有实体 * * @return List */ @SuppressWarnings("unchecked") public final List<E> getAllEntity() { PageList result = new PageList(); List l = getHibernateTemplate().loadAll(clazz); result.addAll(l); result.setCurrentPage(1); result.setPageCount(1); result.setTotalRowCount(l.size()); return result; } /** * 保存实体 * * @param entity 实体对象 */ public final void saveEntity(final E entity) { getHibernateTemplate().saveOrUpdate(entity); } /** * 根据主键删除实体 * * @param id 实体主键 */ public final void removeEntity(final Long id) { Object o = getEntity(id); if (null != o) { getHibernateTemplate().delete(o); } } /** * 执行批量更新和删除操作的HQL * * @param sql hql语句 * @return PageList */ @SuppressWarnings("unchecked") protected final List<E> executeHQL(final String sql) { Session session = null; List<E> ret = null; try { log.info(sql); session = this.getSession(); if (sql.toUpperCase().startsWith("DELETE") || sql.toUpperCase().startsWith("UPDATE")) { session.createQuery(sql).executeUpdate(); } else { ret = session.createQuery(sql).list(); } } catch (HibernateException e) { log.error("executeHQL() error:" + sql, e); throw convertHibernateAccessException(e); } finally { this.releaseSession(session); } return ret; } /** * 执行分页查询 * * @param selectField HQL语句中,SELECT 的内容(如果设置了此参数值,则sql参数中不可带SELCT语句部分) * @param countField HQL语句中,count 的内容 * @param sql HQL语句 * @param page 第几页 * @param rowsPerPage 每页记录数 * @return PageList */ @SuppressWarnings("unchecked") protected final List<E> pageListQuery(final String selectField, String countField, String sql, int page, int rowsPerPage) { PageList result = new PageList(); Session session = null; try { session = this.getSession(); // 预留count的sql语句 String countSql = sql.substring(sql.toUpperCase().indexOf("FROM")); // 设置返回的列,进行查询 if (null != selectField) { sql = "SELECT " + selectField + sql; } if (page <= 0) { page = 1; // page最小为1 } log.debug("query sql:" + sql); Query q = session.createQuery(sql); if (rowsPerPage > 0) { // rowsPerPage的值是0或-1时,都返回全部结果集 q.setFirstResult(rowsPerPage * (page - 1)); q.setMaxResults(rowsPerPage); } result.addAll(q.list()); // 设置分页查询的列 if (null == countField) { countField = "*"; } int rowsCount = result.size(); if (rowsPerPage > 1 && rowsCount > 0) { // 每页记录数大于1且结果集大于0才计算分页信息,否则当前页记录数就作为总的记录数 // TODO 解决page值过大,可能导致rowsCount为0的问题 countSql = "select count(" + countField + ") " + countSql; // 计算总记录数时,消除 Order by语句,提高性能 int oPos = countSql.toUpperCase().indexOf("ORDER BY"); if (oPos > 0) { countSql = countSql.substring(0, oPos); } rowsCount = ((Integer) session.createQuery(countSql).iterate().next()).intValue(); } if (0 == rowsCount) { page = 0; } if (rowsPerPage < 0) { page = 1; rowsPerPage = rowsCount; } result.setCurrentPage(page); result.setTotalRowCount(rowsCount); result.calcPageCount(rowsPerPage); } catch (HibernateException e) { log.error("pageListQuery() error:" + sql, e); throw convertHibernateAccessException(e); } finally { this.releaseSession(session); } return result; } /** * 执行分页查询 * * @param selectField HQL语句中,SELECT 的内容(如果设置了此参数值,则sql参数中不可带SELCT语句部分) * @param sql HQL语句 * @param page 第几页 * @param rowsPerPage 每页记录数 * @param totalRowCount HQL语句获得的总记录数 * @return PageList */ @SuppressWarnings("unchecked") protected final PageList pageListQuery(final String selectField, String sql, int page, int rowsPerPage, final int totalRowCount) { PageList result = new PageList(); Session session = null; try { session = this.getSession(); // 设置返回的列,进行查询 if (null != selectField) { sql = "SELECT " + selectField + sql; } if (page <= 0) { page = 1; // page最小为1 } Query q = session.createQuery(sql); if (rowsPerPage > 0) { // rowsPerPage的值是0或-1时,都返回全部结果集 q.setFirstResult(rowsPerPage * (page - 1)); q.setMaxResults(rowsPerPage); } result.addAll(q.list()); if (0 == totalRowCount) { page = 0; } if (rowsPerPage < 0) { page = 1; rowsPerPage = totalRowCount; } result.setCurrentPage(page); result.setTotalRowCount(totalRowCount); result.calcPageCount(rowsPerPage); } catch (HibernateException e) { log.error("pageListQuery() error:" + sql, e); throw convertHibernateAccessException(e); } finally { this.releaseSession(session); } return result; } /** * 执行分页查询 * * @param sql HQL语句 * @param page 第几页 * @param rowsPerPage 每页记录数 * @param totalRowCount HQL语句获得的总记录数 * @return PageList */ protected final PageList pageListQuery(final String sql, final int page, final int rowsPerPage, final int totalRowCount) { return pageListQuery(null, sql, page, rowsPerPage, totalRowCount); } /** * 执行分页查询 * * @param sql HQL语句 * @param rowsPerPage 每页记录数 * @param page 第几页 * @return PageList * @throws HibernateException hibernate 异常 */ protected List<E> pageListQuery(final String sql, final int page, final int rowsPerPage) throws HibernateException { return pageListQuery(null, null, sql, page, rowsPerPage); } /** * 执行分页查询 * * @param countField HQL语句中,count 的内容 * @param sql HQL语句 * @param rowsPerPage 每页记录数 * @param page 第几页 * @return PageList * @throws HibernateException hibernate 异常 */ protected List pageListQuery(final String countField, final String sql, final int page, final int rowsPerPage) throws HibernateException { return pageListQuery(null, countField, sql, page, rowsPerPage); } /** * 计算HQL查询的返回记录数 * * @param sql 查询语句 * @param countField count语句操作的字段 * @return 记录数 */ protected int countHQL(String sql, String countField) { int rowsCount = 0; Session session = null; try { session = this.getSession(); if (null == countField) { countField = "*"; } sql = "select count(" + countField + ") " + sql; rowsCount = ((Integer) session.createQuery(sql).iterate().next()) .intValue(); } catch (HibernateException e) { log.error("countHQL() error:" + sql, e); throw convertHibernateAccessException(e); } finally { this.releaseSession(session); } return rowsCount; } /** * 计算HQL查询的返回记录数 * * @param sql 查询语句 * @return 记录数 */ protected int countHQL(String sql) { return countHQL(sql, null); } }
3. 业务逻辑基类接口
- /**
- * BaseManager.java
- *
- * Copyright 2007 easou, Inc. All Rights Reserved.
- */
- package com.easou.ad.bl;
- import java.util.HashMap;
- import java.util.List;
发表评论
-
安装和使用memcached
2014-04-16 16:24 641如何将 memcached 融入到 ... -
applicationContext.xml
2013-08-09 09:05 941<?xml version="1.0&quo ... -
注释驱动的 Spring cache 缓存介绍
2013-08-08 07:04 659概述 Spring 3.1 引入了激动人心的基于注释(an ... -
Spring2.5 Annotations
2013-08-08 06:33 854完成setXxxx功能,即配置文件的 <propert ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2013-08-07 23:21 1026本文将构建一个普通工程来说明spring注解缓存的使用方式, ... -
Ehcache 整合Spring 使用页面、对象缓存
2013-08-07 22:51 893Ehcache 整合Spring 使用页面、对象缓存 ... -
javassist教程和示例
2013-05-18 08:57 2008Javassist是一个执行字节 ... -
ZooKeeper官方文档
2013-05-16 17:09 1559介绍(源自ZooKeeper官方文档) 学习HBase过程 ... -
ZooKeeper -例子
2013-05-16 17:08 1206ZooKeeper ZooKeepe ... -
Spring整合Hessian访问远程服务
2013-05-15 13:44 853Spring整合Hessian访问远程服务 目录 1.1 ... -
redis
2013-05-14 11:44 767redis是一个key-value存储系统。和Memcach ... -
spring 资源访问
2013-05-13 08:26 996spring在java基础上封装了资源访问,简单易用。 R ... -
ZooKeeper——入门
2013-05-08 16:12 909ZooKeeper——入门 博客分类: ZooK ... -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据(IBM)
2013-05-08 14:07 784安装和配置详解 本文 ... -
分布式协调服务---Zookeeper
2013-05-08 14:05 7741、Zookeeper overview Zookee ... -
Hibernate
2013-03-28 13:04 923一、简述 Hibernate 和 JD ... -
Apache+Tomcat集群配置详解
2013-02-01 10:52 890Apache + Tomcat集群配置详解(1) 一、 ... -
Apache+Jboss集群基于反向代理的负载均衡
2013-02-01 10:40 2490假设三台机器IP分别为172.29.128.100、172. ... -
spring + ibatis 多数据源事务(分布式事务)管理配置方法
2012-12-17 15:18 1265spring + ibatis 多数据源事务(分布式事务 ... -
Hessian序列化不设SerializerFactory性能问题
2012-10-31 09:47 1492Hessian序列化不设SerializerFactor ...
相关推荐
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
### 泛型DAO层在SSH框架中的应用与详解 #### 引言 在现代软件开发中,特别是基于Java的企业级应用开发中,DAO(Data Access Object)层的设计扮演着至关重要的角色。它作为业务逻辑层与数据持久层之间的桥梁,承担...
而泛型DAO是一个类型安全的,代码精简的设计模式(相对于传统DAO),尤其在DAO组件数量庞大的时候,代码量的减少更加明显。 泛型DAO的核心是定义一个GenericDao接口,声明基本的CRUD操作: 用hibernate作为持久化...
至于`Dao经典泛型.doc`文件,可能是更深入的关于Hibernate泛型DAO的文档,可能包含了如何配置Spring、如何处理复杂查询以及如何优化泛型DAO的更多细节。阅读这份文档将进一步提升你对泛型DAO的理解和应用能力。 ...
【标题】"Hibernate泛型Dao"是针对Java开发中的数据持久化框架Hibernate的一个高级应用,主要目的是为了提高代码的复用性和简洁性。在传统的Hibernate使用中,针对每个实体类,我们都需要创建一个对应的Dao(Data ...
本文将深入探讨`JdbcTemplate`通用泛型Dao实现的相关知识点,帮助开发者更好地理解和应用这一技术。 首先,让我们了解什么是`JdbcTemplate`。它是Spring框架的一部分,用于处理SQL操作。`JdbcTemplate`提供了一组...
本篇文章将深入探讨一个使用Spring注解和Hibernate实现的泛型DAO设计,以提高代码的复用性和可维护性。 首先,`HibernateBaseDao.java`是基础的Hibernate DAO类,它提供了对Hibernate操作的基本封装。这个类通常会...
6. **泛型Dao**:在Java开发中,泛型Dao(Generic Dao)是一种设计模式,用于减少重复的数据库操作代码。通过定义一个通用的Dao接口,可以实现对不同类型的实体对象进行CRUD操作,提高了代码的复用性和可维护性。...
泛型DAO模式在Java Web开发中的应用 摘要: 泛型DAO模式是Java Web开发中的一种重要模式,它可以提高数据访问代码的类型安全性和可读性。该模式可以与Struts、Spring和JPA框架集成,实现用户管理系统的开发。通过...
泛型DAO(Generic DAO)是DAO模式的一个扩展,它引入了泛型的概念,提高了代码的复用性和类型安全性。本篇文章将深入探讨泛型DAO的实现原理、优势以及如何在实际项目中应用。 首先,我们来理解什么是泛型。泛型是...
本文探讨了在Java Web程序中应用泛型DAO模式的作用和意义。首先,文章明确了Java Web技术的定义和在互联网领域中的重要性,阐述了随着软件功能需求的不断提高,Java Web技术也在不断升级和改造。随后,文章指出泛型...
本文将深入探讨“Spring Hibernate 泛型DAO”这一主题,以及如何通过泛型DAO实现更加高效、可复用的代码。 首先,让我们理解什么是DAO(Data Access Object)模式。DAO是一种设计模式,它的主要作用是隔离业务逻辑...
而泛型DAO(Data Access Object)则是基于Hibernate进一步抽象出来的一个设计模式,用于提供更通用的数据操作方法。本文档主要探讨了如何在Spring+Hibernate环境中创建和使用泛型DAO。 首先,我们来看一下泛型DAO...
而泛型DAO是DAO模式的一个进阶应用,它通过引入泛型来提高代码的复用性和可维护性。 泛型(Generics)是Java 5引入的一个重要特性,它可以让我们在编译时检查类型安全,并且允许我们创建参数化的类型。在泛型DAO中...
这个压缩包文件的标题"SSH 泛型DAO分页"表明它提供了一个实现SSH框架整合的示例,特别关注了泛型DAO(Data Access Object)以及分页功能。下面将详细介绍SSH框架及其分页和泛型DAO的概念。 1. **Struts2**: Struts2...
标题中的“基于Hibernate的泛型Dao框架”是指在Java开发中使用Hibernate ORM工具,并结合泛型设计模式构建的数据库访问对象(DAO)框架。这样的框架旨在提高代码复用性,减少重复工作,使得数据访问层的实现更加简洁...
在这个主题中,我们将深入探讨"ssh通用泛型DAO"的相关知识点。 首先,我们来了解"BaseHibernateDAO"。BaseHibernateDAO是基于Hibernate框架的一个基类,它封装了常见的数据库操作,如增删查改(CRUD)。通过继承这...