- 浏览: 248878 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
在做项目的时候每次都为每个POJO实体写一个对应的DAO很麻烦,虽然可以由IDE或者一些快速生成工具来生成,但是也难免需要更改。处于这个原因,个人写了一个通用的泛型DAO来封装一些最基本的操作,包括对实体的增删改查。基于Spring的hibernate模板实现,初学,如有什么不好的地方请大家多多拍砖! Java代码
/**
* DAO操作基类 本DAO层实现了通用的数据操作
*
* @author 黄磊
*
* @param <T>
* POJO实体对象
* @param <ID>
* ID
*/
public class BaseHibernateDAO<T, ID extends Serializable> extends HibernateDaoSupport {
private static final Logger logger = Logger.getLogger(BaseHibernateDAO.class);
/**
* 保存指定实体类
*
* @param entityobj
* 实体类
*/
public void save(T entity) {
try {
getHibernateTemplate().save(entity);
} catch (RuntimeException e) {
logger.error("保存实体异常", e);
throw e;
}
}
/**
* 删除指定实体
*
* @param entityobj
* 实体类
*/
public void delete(T entity) {
try {
getHibernateTemplate().delete(entity);
} catch (RuntimeException e) {
logger.error("删除实体异常", e);
throw e;
}
}
/**
* 更新或保存指定实体
*
* @param entity 实体类
*/
public void saveOrUpdate(T entity) {
try {
getHibernateTemplate().saveOrUpdate(entity);
} catch (RuntimeException e) {
logger.error("更新或保存实体异常", e);
throw e;
}
}
/**
* 查找指定ID实体类对象
*
* @param entityClass
* 实体Class
* @param id
* 实体ID
* @return 实体对象
*/
@SuppressWarnings("unchecked")
public T findById(Class<T> entityClass, ID id) {
try {
return (T) getHibernateTemplate().get(entityClass, id);
} catch (RuntimeException e) {
logger.error("查找指定ID实体异常,ID:" + id, e);
throw e;
}
}
/**
* 查找指定属性的实体集合
*
* @param entityClass
* 实体
* @param propertyName
* 属性名
* @param value
* 条件
* @return 实体集合
*/
@SuppressWarnings("unchecked")
public List<T> findByProperty(Class<T> entityClass, String propertyName,
Object value) {
try {
String queryStr = "from " + entityClass.getName()
+ " as model where model." + propertyName + "=?";
return getHibernateTemplate().find(queryStr, value);
} catch (RuntimeException e) {
logger.error("查找指定条件实体集合异常,条件:" + propertyName, e);
throw e;
}
}
/**
* 查询指定HQL语句的分页数据集合
*
* @param hsql
* HQL语句
* @param firstRow
* 开始记录号
* @param maxRow
* 最大记录号
* @return 分页数据集合
* @throws Exception
* 抛出异常
*/
@SuppressWarnings("unchecked")
public List<T> findByPage(final String hsql, final int firstRow,
final int maxRow) {
try {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s)
throws HibernateException, SQLException {
Query query = s.createQuery(hsql);
query.setFirstResult(firstRow);
query.setMaxResults(maxRow);
List list = query.list();
return list;
}
});
} catch (RuntimeException e) {
logger.error("分页查询异常,HQL:" + hsql, e);
throw e;
}
}
/**
* 从Spring上下文中获取本类对象
* 此方法可能存在线程并发问题(待测)
*
* @param context Spring上下文
* @return 本类对象
*/
@SuppressWarnings("unchecked")
public static BaseHibernateDAO getFromApplicationContext(WebApplicationContext context) {
return (BaseHibernateDAO)context.getBean("BaseHibernateDAO");
}
}
发表评论
-
解析网页利器组合(正则、jsoup、beanshell、dozer)资源
2012-05-31 16:09 1465由于项目需要使用java正则、jsoup、dozer、bean ... -
Java正则表达式(二)
2012-05-31 15:47 867Matcher类: 使用Matcher类,最重要的 ... -
Java正则表达式(一)
2012-05-31 15:46 858正则表达式在处理文本方面用处非常大,最早像在Perl和awk语 ... -
Java正则表达式详解
2012-05-31 15:45 848如果你曾经用过Perl或 ... -
理解String与String.intern()
2012-01-05 15:44 8421. 首先String不 ... -
StringUtils工具类的常用方法
2011-11-25 15:24 946StringUtils 方法的操作对象是 java.lan ... -
主题:深入分析 Java 中的中文编码问题
2011-11-11 09:06 1010几种常见的编码格式 ... -
Java中的乱码问题
2011-09-01 09:35 1102Java中乱码问题很常见,原因也多种多样,这里做一个总结, ... -
java反射机制详解 及 Method.invoke解释
2011-08-26 11:40 1681JAVA反射机制是在运行状态中,对于任意一个类,都能够 ... -
java编程中'为了性能'一些尽量做到的地方
2011-08-25 11:42 875最近的机器内存又爆满了,出了新增机器内存外,还应该好好re ... -
利用java反射原理写了一个简单赋值和取值通用类
2011-08-22 09:50 2459由于项目的实际需要,所以利用java反射原理写了一个简单给be ... -
Java实现给图片添加水印
2011-08-22 09:41 2100周末在家上围脖,看到sina围脖上图片都有水印,想到Jav ... -
java获取当前类的绝对路径
2011-08-03 10:41 1191在jsp和class文件中调用的相对路径不同。在jsp里, ... -
深入浅出URL编码
2011-08-03 10:30 802深入浅出URL编码 版权声明:如有转载请求,请注明出 ... -
URLConnection的连接、超时、关闭用法总结
2011-08-03 10:25 1350Java中可以使用HttpURLConnection来 ... -
Apache Rewrite实现URL的跳转和域名跳转
2011-07-28 11:31 1100Rewirte主要的功能就是实现URL的跳转,它的正则表达式是 ... -
文件、流总结
2011-07-27 09:31 14041、File类:File类位于java ... -
java对cookie的操作(转)
2011-07-18 15:56 989java对cookie的操作比较简单,主要介绍下建立coo ... -
java泛型
2011-07-18 15:42 832在Java SE1.5中,增加了一个新的特性:泛型(日本语 ... -
urlRewrite重写技术的运用(转)
2011-07-18 15:24 1220如何增强你网站中地址的可读性和让搜索引擎快速的收录到你的站点, ...
相关推荐
在这个主题中,我们将深入探讨"ssh通用泛型DAO"的相关知识点。 首先,我们来了解"BaseHibernateDAO"。BaseHibernateDAO是基于Hibernate框架的一个基类,它封装了常见的数据库操作,如增删查改(CRUD)。通过继承这...
例如,我们可以有如下的泛型DAO接口: ```java public interface GenericDao<T> { void save(T entity); T get(Class<T> clazz, int id); void update(T entity); void delete(int id); } ``` 然后,对于特定...
泛型dao接口 :GenericDao, ID extends Serializable> 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...
在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...
1. `GenericDAO.java`:泛型DAO接口,定义了基本的CRUD方法。 2. `HibernateGenericDAO.java`:实现了`GenericDAO`接口的具体类,使用Hibernate作为底层的数据访问技术。 3. `BaseDAO.java`:可能是一个抽象类,包含...
在C++编程中,泛型算法是标准库提供的强大工具,它们可以应用于各种不同类型的容器,无论容器内部存储的数据类型如何。这些算法不依赖于特定的容器实现,而是通过迭代器来操作容器中的元素,因此具有高度的通用性。...
这篇博客"ssh2 + dao泛型"结合了这两个概念,探讨了如何在SSH2框架下利用泛型优化DAO层的操作。 SSH2框架主要由Spring、Struts和Hibernate三个部分组成,它为Java Web开发提供了强大的支持。Spring提供依赖注入和...
这个压缩包文件的标题"SSH 泛型DAO分页"表明它提供了一个实现SSH框架整合的示例,特别关注了泛型DAO(Data Access Object)以及分页功能。下面将详细介绍SSH框架及其分页和泛型DAO的概念。 1. **Struts2**: Struts2...
SSH泛型代码实例是关于Java编程中的一种常见技术——Spring、Struts和Hibernate(SSH)框架结合使用泛型的应用示例。泛型是Java SE 5.0引入的一个重要特性,它允许在编译时检查类型安全,并且所有的强制转换都是自动...
综上所述,这个项目展示了如何利用Java的泛型和反射技术实现一个通用的DAO,使得数据库操作更加灵活和易于维护。泛型确保了类型安全,而反射则提供了运行时的动态行为。这种设计模式在实际开发中非常常见,尤其是在...
本文将深入探讨`JdbcTemplate`通用泛型Dao实现的相关知识点,帮助开发者更好地理解和应用这一技术。 首先,让我们了解什么是`JdbcTemplate`。它是Spring框架的一部分,用于处理SQL操作。`JdbcTemplate`提供了一组...
Hibernate 对泛型Dao接口的实现主要通过继承泛型Dao接口,使用 Hibernate 的 Session 对象来实现数据访问。 Hibernate 对泛型Dao接口的实现的优点: 1. 简化数据访问:Hibernate 对泛型Dao接口的实现可以简化数据...
例如,一个泛型DAO接口可能定义如下: ```java public interface GenericDao<T> { void save(T entity); T get(Long id); void update(T entity); void delete(T entity); } ``` 然后,对于一个名为`User`的实体...
为什么我们要使用通用DAO接口呢,因为我们的数据库操作无非是增删改查,CRUD操作,我们不需要为每个实体去编写一个dao接口,对于相似的实体操作可以只编写一个通用接口,然后采用不同的实现! DAO已经成为持久层...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
JAVA_J2EE大作业——学生信息管理系统 本资源是一个基于 JAVA 和 J2EE 的学生信息管理系统的大作业,使用了 XML 解析技术和 Java Servlet 技术来实现学生信息的管理。 知识点 1:XML 解析技术 在本系统中,使用了...
【泛型DAO】是一种在Java开发中常见的设计模式,它利用了Java泛型特性来提高代码的可重用性和类型安全性。在Java中,DAO(Data Access Object)模式是用来封装对数据库的操作,将业务逻辑与数据访问逻辑分离,使得...
### 泛型DAO层在SSH框架中的应用与详解 #### 引言 在现代软件开发中,特别是基于Java的企业级应用开发中,DAO(Data Access Object)层的设计扮演着至关重要的角色。它作为业务逻辑层与数据持久层之间的桥梁,承担...
现在无论做什么应用,基本上都会有涉及对象... 其实,利用Java面向对象的基本特性及JDK5新引入的泛型语法,我们可以创建通用的DAO对象的CRUD方法,同时又可保证类型的安全性。下面DAO的实现以Hibernate为基础加以演示。
在实际开发中,为了提高代码的可重用性和可维护性,通常会创建泛型DAO(Data Access Object)接口来处理与数据库交互的通用逻辑。本篇将详细介绍"Hibernate泛型DAO接口,大部分通用都已包括"这一主题。 首先,让...