前面时间一直忙于赶项目,忽略了Struts2+hibernate+spring这个系列只是开了个头,所以赶紧把以前的代码翻出来,整理了一下,就接着讲DAO层吧。
首先我们一起讨论一下DAO层的设计,一般来说,有这样两种设计:
java 代码
- public class ADAO(){
- public void create(A a){
- ....
- }
-
- public void add(A a){
- ....
- }
-
- public void delete(A a){
- ....
- }
- }
-
- public class BDAO(){
- public void create(B b){
- ....
- }
-
- public void add(B b){
- ....
- }
-
- public void delete(B b){
- ....
- }
-
- public void find(B b){
- ....
- }
- }
-
- public class CDAO(C c){
- public void create(){
- ....
- }
-
- public void add(C c){
- ....
- }
-
- public void delete(C c){
- ....
- }
-
- public void find(C c){
- ....
- }
- }
这里一共设计了三个实体DAO,分别为A,B,C,这样的好处是对象的封装思想比较好,每个实体DAO都有自己独立的接口方法,但缺点也显而易见,就是重复代码太多太多。
再看第二种设计思想,以解决前面的缺点:
java 代码
- abstract public class BaseDAO{
- public void create(Object o){
- ....
- }
-
- public void add(Object o){
- ....
- }
-
- public void delete(Object o){
- ....
- }
-
-
- }
-
- public class ADAO entends BaseDAO{
- public void otherMethod(A a){
- .....
- }
- }
-
-
- .....
使用这种设计思想,很好的解决了前面的瓶颈,但它也有缺点,破坏了面向对象的封装性。
两个设计思想,我们该如何取舍呢?其实如果了解泛型的话,就迎刃而解了,于是,就有了第三种解决方案如下:
java 代码
- abstract public class DAO<t></t> {
- public void create (T t)){
- ...
- }
-
- public void delete (T t)){
- ...
- }
-
- public void update (T t)){
- ...
- }
-
- ...
- }
-
- public class ADAO extends BaseDAO {
- public void otherMethod (A a){
- ...
- }
- }
注:关于泛型的知识,不是本文所要讲的,如有不解,可查找有关文档寻求帮助。
应该说,我个人比较喜欢第三种解决方案,由于这个项目使用了spring,于是大家应该又能想到让它继承于Spring的HibernateDaoSupport
,提供分页函数和若干便捷查询方法,并对返回值作了泛型类型转换。
经过讨论后,大家应该有了比较好的思路了,具体代码碍于篇幅,下一篇贴出。
分享到:
相关推荐
1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...
使用struts2、hibernate、spring、dwr整合的简单项目。包括级联等 注意:csdn上面显示为chm文件。该文件为.7z的压缩文件。用压缩软件可以打开的 csdn弄错了
struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+...
用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统。 其中用Dwr去进行用户注册的用户是否存在的验证。 全部业务控制交由Spring去进行处理。事务处理也...
Struts2+Hibernate+Spring整合实例,登陆注册实例,简单来说,Spring通过IoC容器上管(Struts2)Action的创建并依赖注入给控制器,下管(hibernate)SessionFactory的创建并依赖注入给DAO组件,是一个巨大的工厂
总结,该例示注释非常详细,演示Spring托管Hibernate和Struts的Action, 以及Spring的事务声明(包括1.x与2.x的用法)与非事务声明的使用方式。 使用DWR可以方便的使用Spring托管的持久层功能。 目的:希望广大Java...
基于struts+spring+hibernate开发的人力资源管理系统,人事管理系统,是初学者的首选的好例子!希望能给大家带来学习的用处!~~~~
第二部分详细讲解Struts 2.2、Spring 3.0和Hibernate 3.6三个框架的用法,介绍三个框架时,从Eclipse IDE的使用来上手,一步步带领读者深入三个框架的核心。这部分内容是笔者讲授“疯狂Java实训”的培训讲义,因此是...
SSH整合示例(详情见我博客专栏)之前的博客我们总结了spring基础、spring分别整合struts2、hibernate、mybatis等,今天我们来同时整合下 struts、spring、hibernate,也就是所谓的 ssh 。 整合流程: 1 首先整合...
这里是使用spring配置文件管理hibernate。 先配置mysql数据驱动,打开eclipse database explorer perspective,选择tie数据库中的user表,创建hibernate Reverse Engineering 生成vo,还可以生成dao。 5. 这样...
12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...
目的:构建struts2开发框架 使用 Hibernate作为持久层操作 采用Spring容器 适合:有一定struts2基础 对Hibernate有一定的了解 对Spring有一定的知识 实现:通过对用户信息的基本操作来给大家做个示范 1、struts2的...
本文是开发基于spring的web应用的入门文章,前端采用Struts MVC框架,中间层采用spring,后台采用Hibernate。 本文包含以下内容: •配置Hibernate和事务 •装载Spring的applicationContext.xml文件 •...
减少重复代码的编写,增强DAO层代码的重用。
1)JSP+javabean+DAO(Ajax:anywhere) 2)Struts+spring+hibernate3(AJax:DOJO) 3)JSF+richfaces+seam+EJB 总共3个完整的实例,并配有需求分析~~~~~~~~,绝对经典!
struts2.3.4+spring3.2.0+hibernate4+hibernate_generic_dao struts hibernate spring最大化使用注释 基于spring的远程调用
第二部分详细讲解Struts 2.2、Spring 3.0和Hibernate 3.6三个框架的用法,介绍三个框架时,从Eclipse IDE的使用来上手,一步步带领读者深入三个框架的核心。这部分内容是笔者讲授“疯狂Java实训”的培训讲义,因此是...
1、Spring 3.x 对 Hibernate 4.x 不提供 HibernateDaoSupport,所以在dao的实现层注入SessionFactory 2、报错:org.hibernate.HibernateException: No Session found for current thread 意思是必须在...
NULL 博文链接:https://jsrookie.iteye.com/blog/294756
本书是《轻量级J2EE企业应用实战》的第二版,同时还融合了《整合Struts+Hibernate+Spring应用开发详解》理论部分。实际上,本书凝结了前两本书的精华部分。 本书介绍了Java EE领域的三个开源框架:Struts 2、Spring...