- 浏览: 500252 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
来这里学java:
...
实战篇:设计自己的Annotation -
yushui2000:
突然想到一种方法,就是1、2、2、3、4、5作为5个球(类似彩 ...
一道算法题目,值得一看 -
wst0350:
理解力
实战篇:设计自己的Annotation -
yingzhor:
楼下的,你看看代码不就知道怎么验证了吗?这不是放在sessio ...
利用servlet生成简单的验证码 -
ming_7755:
妙用Commons良药<三>
在进行Hibernate开发过程中,我们通常会使用DAO模式,有一些通用的数据操作方法,如CRUD,我们通常会将这些方法集中在一个DAO,这样会简便很多。如在AppFuse中,创建了一个DAO接口,包含一些常用的方法,接口如下:
这里的代码包含了许多entity类型的信息,也就是DAO接口中的Class clazz。接下来AppFuse同样创建一个缺省的实现类:BaseDAOHibernate,将这个接口做一缺省实现。以后我们创建的新的DAO需要继承DAO接口,如UserDAO,RoleDAO都继承DAO接口,对应的DAO实现都继承BaseDAOHibernate,再实现指定的接口,如UserDAOHibernate继承BaseDAOHibernate,实现UserDAO接口。 如果你的项目在使用Java 5,那么再这么做可能有点不适合,在调用AppFuse的DAO接口时,你通常还需要进行额外的操作:造型(cast type),提供entity类名,List数据没有包含元素类型信息等,这里要感谢Java 5的Generics,让我们做同样的事情轻松多了,下面让我们看看在Java 5下如何规划DAO接口。首先我们创建同样的一个DAO接口,代码如下:
在这个接口中,我们提供了基本的CRUD和简单的查询(使用了Hibernate的Criterion),同时我们引入Generics机制,enity的类型我们用T代替,在后面就可以看到这样做的带来的好处,同时我们创建一个这个接口的缺省实现:bstractHibernateDao,代码如下: java 代码
下面让我们看看如何创建业务的DAO,我们只需创建一个新的DAO,继承AbstractDao即可,这里要提供entity的类型信息,如PersonPO,代码如下:
基本的CRUD完全没有了,我们只需关注其他的一些业务方面,在这个接口中只需继承AbstractDao <personpo></personpo> ,其中PersernPO为entity的类型,这个是Generics需要的。下面我们看一下UserDao的接口实现,代码很简单,如下: java 代码
这里我们需要继承AbstractHibernateDao,同时提供entity的类型信息,同时创建一个默认的构造函数,然后调用AbstractHibernateDao的构造方法,进行entity类型赋值,这样UserDao的实现就完成了。 这里因为使用了Spring,接下来只需在Spring的配置文件中将UserDaoImpl进行声明定义即可。在你取得UserDao接口后,再调用的方式就完全以前不一样了,这里包含了entity的类型信息,而这以前都是Object类型,还需要了提供entity类的类型名称。下面的这两张图的对比相信你会看的一目了然。
java 代码
在这个实现中,我们需要提供Entity的类型信息,也就是代码中的PoClass,AbstractHibernateDao只包含一个构造函数,那么所有继承该类的子类必须调用AbstractHibernateDao类的构造函数,保证了entity的类型被准确赋值。
java 代码
java 代码
|
使用Java 5 Generics特性定义的DAO |
AppFuse中定义的DAO(传统的DAO模式) 总结:通过引入Java 5的Generics,再回头设计一下DAO,你会发现有些事情处理起来方便很多,在以前,我们只能获取Object对象,现在我们完全可以获取指定类型的对象啦,操作和理解都方便啦。关于AbstractDao你可能有自己的想法,你可以根据具体情况更改一些,如添加Spring的Annotation Transaction,这样对事务控制也会简单很多;如将添加分页功能. |
这一篇文章转载于:http://www.jetmaven.net/contents/documents/j_hibernate_java5_dao.php
发表评论
-
TestNG系列2:TestNG初接触
2008-04-18 22:52 3551首先来看一个非常简单 ... -
TestNG系列1:TestNG简介及插件
2008-04-18 22:19 6377一、什么是TestNG 引用TestNG是根据JUnit 和 ... -
用jdbcTempate调用存储过程,处理BLOB/CLOB小记
2007-11-06 00:20 90971、利用spring的jdbcTemplate调用存储过程 假 ... -
怎样利用spring简单地发送邮件
2007-11-03 16:45 3828SMTP:简单邮件传输协议,用于发送电子邮件的传输协议. PO ... -
搜索篇:Struts、Lucene的Web实例
2007-01-15 23:10 7964代码是网上下载的,有兴趣的可以看一下 这里用到的Lucene是 ... -
复习笔记:利用spring的BeanName简化事务管理配置
2006-12-30 00:27 6195常常在项目开发时候,很多目标bean需要生成事务代理,当然可以 ... -
Stripes 快速入门指南[翻译]
2006-12-27 18:56 10483说明:这是Stripes文档中的一篇叫Quick Start ... -
搜索篇:lucene简单实例<二>
2006-12-20 23:09 10735写文章的时候,感觉比较难写的就是标题,有时候不知道起什么名字好 ... -
搜索篇:lucene简单实例<二>
2006-12-20 23:00 123写文章的时候,感觉比较难写的就是标题,有时候不知道起什么名字好 ... -
搜索篇:lucene的简单实例<一>
2006-12-19 20:12 13476说明一下,这一篇文章的用到的lucene,是用2.0版本的,主 ... -
一个比较完整的ANT实例
2006-12-19 19:41 8385Ant是一种专为java量身订做的构建工具,基础已经了java ... -
对struts2的的一些不满
2006-11-12 01:06 3001个人对struts2的一些不满的地方 1、基本大部分全抄web ... -
从webwork2.2.4迁移到struts2
2006-11-12 00:47 2609注:(originally posted on the Web ... -
webwork2.2到struts2的变化
2006-11-12 00:44 2214While Struts 2 started with the ... -
反思spring:由Ruby on Rails想到的
2006-10-23 09:33 3280[size=11] 众所周知,RoR里面的指导原则有: 第 ... -
关于jboss,weblogic的配置
2006-05-26 22:28 3480###################以下是jboss的配置# ... -
[转载] 无所不能的“蚂蚁”--Ant
2006-06-05 23:27 3858说他无所不能,好像有点夸张,但是用过Ant之后,感觉真的是只有 ... -
研究一下springside的核心部分源代码
2006-09-15 19:47 7045这两天,有一些时间,研究一下springside的源代码,结 ...
相关推荐
In part 5, “Building applications,” we discuss the design and implementation of layered and conversation-aware Java database applications. We discuss the most common design patterns that are used ...
在IT行业中,`Java MVC+DAO`架构是开发Web应用程序的一种常见模式,它将应用程序的逻辑分解为四个主要部分:模型(Model)、视图(View)和控制器(Controller),以及数据访问对象(DAO)。本篇将详细介绍如何使用...
**标题:“HibernateDAO的写法”** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以专注于业务逻辑,而不用过多地关注SQL语句的编写。这篇博客主要探讨了如何在项目中实现...
标题 "some simple demo about hibernate3.2 and spring2.5" 暗示这是一个关于如何集成和使用 Hibernate 3.2 和 Spring 2.5 的简单演示项目。这两个库在Java开发中扮演着重要角色,Hibernate是流行的对象关系映射...
根据标题、描述和部分内容,知识点覆盖范围主要集中在Java Web开发领域,并且包括了JSP、Servlet、Ajax以及SSH框架(Struts 2、Spring、Hibernate)的技术整合和实战案例分析。 JSP(Java Server Pages)是一种动态...
通过将搜索对象传递给通用DAO和通用DAO的搜索方法,可以使用此功能。 搜索对象提供了灵活的搜索选项: 使用标准运算符(=,!=,>,<,> =,<=,LIKE,IN,IS NULL和IS EMPTY)对属性进行过滤。 使用...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发人员将Java对象模型映射到数据库表,并在对象和数据库之间进行转换。在实际开发过程中,我们经常会遇到需要从多个表中获取数据的情况,这时就需要用到连...
5. 创建DAO接口和实现类:定义数据访问接口,然后使用Spring的@Repository注解标记实现类,实现DAO方法。 6. 配置事务管理:在Spring配置文件中启用事务管理,并定义事务边界。 7. 测试整合:编写测试用例,验证...
Spring框架是Java平台上的一个全面的轻量级应用程序框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。Spring的核心特性可以用来简化新应用的开发,也可以通过模块化和可...
1 Build two java project named "TEST_COMMON" and "TEST_DAO" 2 Copy the source code to the new projects. 3 Import the liberaries as show on top. 4 New the database and be sured the server is open. 4 OK...
5. **整合Struts2与Hibernate**:讲解如何在Struts2 Action中调用Hibernate的DAO层,实现数据的增删改查,以及如何处理数据验证和异常。 6. **实例分析**:可能包含多个日志记录(day01至day03)的项目实践,逐步...
标题“spring_hibernate_in one and find more than 1 rs”暗示了这个压缩包可能包含一个整合Spring和Hibernate的示例项目,重点在于在一个查询中找到多条结果。在这个项目中,Spring作为依赖注入和框架管理工具,而...
在本篇文章中,我们将深入探讨如何使用Struts框架结合DAO(Data Access Object)设计模式以及Hibernate ORM(Object Relational Mapping)技术实现一个完整的用户登录系统。这个系统不仅能够有效地处理用户的登录...
### Hibernate3 使用经验 #### 一、在 Hibernate 中配置参数 ...这些内容涵盖了如何在 Hibernate 中配置参数、执行 SQL 语句、获取 Session 以及如何在 DAO 层进行事务处理等方面的知识点。希望对读者有所帮助。
Struts、Spring 和 Hibernate 是Java开发中常用的三大框架,它们分别负责不同的职责,共同构建了企业级应用的基础架构。在“Struts+Spring+Hibernate_upload_and_download.rar_Spring+Hibernate”这个压缩包中,我们...
在Java中,定时任务通常可以通过Quartz、Spring的Task Execution and Scheduling或者Java自带的ScheduledExecutorService来实现。这些工具允许我们定义任务并设置执行频率,如每小时、每天等。在Spring MVC和...
这个项目中的【NetHardDisk】可能包含了实现上述功能的所有源代码和配置文件,包括但不限于Action类(Struts的控制器)、DAO(数据访问对象,使用Hibernate进行数据库操作)、Service接口及实现类(封装业务逻辑)、...
在IT行业中,Hibernate是一个非常流行的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的数据交互。本文将详细介绍如何进行Hibernate环境搭建,以及如何进行基本操作的封装,我们将以MySQL开源...
在 Java 应用开发中,尤其是使用 ORM 框架如 Hibernate 进行持久化层开发时,如何高效地处理 BLOB 类型字段成为了一个关键问题。 本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过...
在Java开发领域,Spring框架和Hibernate是两个非常重要的开源库,它们分别负责应用程序的依赖管理和对象关系映射(ORM)。Spring作为一个全面的轻量级应用框架,提供了事务管理、AOP(面向切面编程)、IoC(控制反转...