数据库访问层中使用GenericDao和HibernateDaoSupport
1.参考文献
1).SSH实例:基于HibernateDaoSupport的泛型Dao
3).Generic Data Access Objects
open source project:
4).genericdao
2.问题
含有多个pojo实体,每一个pojo都要写一个PojoDAO,非常乏味枯燥,思考有没有一种通过的DAO能够省去为每一个pojo写一个DAO。
3.GenericDao分析
GenericDao的目的是通过他来实现通用的数据库访问层,它通过泛型来实现不同pojo也能够使用一个GenericDao来进行访问,只需要设置泛型的类型即可。首先来看一看GenericDao整体结构。
图1:GenericDao结构图
ps:2011-12-28
今天给eclipse安装了GreenUML这个eclipse插件,在eclipse中通过如下网址:http://www.cse.buffalo.edu/faculty/alphonce/green更新插件即可。GreenUML能够根据代码生成UML图,所以我将GenericDao结构生成UML如下:
下面来解释上面每一个类或者接口的用户
- GenericDao<T>:泛型接口,在这里定义了Dao层的基础的CRUD(Create, read, update and delete)方法,比如sava保存实例,delete删除实例等等。
- HibernateDaoSupport:这个是由spring提供的一个抽象类:org.springframework.orm.hibernate3.support.HibernateDaoSupport。类里面定义了 HibernateTemplate的实例,是hibernate的ORM结构中最基础的一个类。
- HibernateGenericDao:这个类在我们的例子中没有定义任何方法与变量,他的主要的用处是:(1)重写(Override)HibernateDaoSupport 中定义的方法;(2)增加一些对HibernateDaoSupport类的补充。
- GenericDaoImplHibernate<T>:这个类继承HibernateGenericDao并实现接口GenericDao<T>
- FileDao:数据访问层接口,根据需求定义方法。
- FileDaoImpl:实例化的数据库访问层接口FileDao,并继承通用数据库访问层的类。这样如果FileDao中没有定义方法,那么就表明通用数据库访问层GenericDaoImplHibernate已经能够满足需要。
上面的结构图看上去有点负责,其实是因为这样的接口充分考虑了系统的可扩充性。如果不考虑可扩充性的话,那么像FileDao、FileDaoImpl和HibernateGenericDao都可以去掉,直接让GenericDaoImplHibernate<T>实现GenericDao<T>接口并继承HibernateDaoSupport类就可以了。在后在使用的时候实例化Dao对象,比如:
GenericDaoImplHibernate<User> userDao=new GenericDaoImplHibernate<User>()
4.GenericDao代码实例
根据GenericDao结构图给出各个接口与类的代码。
4.1.GenericDao.java
4.2.HibernateDaoSupport.java
这个其实只需要导入spring.jar包即可,不过这里我还是贴出它的源代码,以供参考
4.3.HibernateGenericDao.java
4.4.GenericDaoImplHibernate
4.5.UserDao
4.6.UserDaoImpl
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2011/12/25/2300986.html,如需转载请自行联系原作者
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
笔试题集锦(1)
1) 下面代码的结果是什么?(台湾某cpu公司05年笔试题) #include <iostream> using namespace std; #define product(x) (x*x) int main() { int i=3,j,k; j = product(i++); k = product(++i); cout<<"j="<<j<<",k="<<k<<endl; return 0; } 答案 2) 下面代码的结果是什么?(国内公司05年笔试题) int a = 5,b = 3; !a&&b++; 执行后a和b的值是? 答案 3) 下面的代码两种写法,你认为哪种更好?(美国某嵌入式公司05年10月笔试题) 写法1: if('A'==a) { a++; } 写法2: if(a =='A') { a++; } 答案 4) 下面代码的结果是什么?(台湾某cpu公司05年笔试题) char foo() { u...
- 下一篇
从CSDN搬家到博客园
2010年六月的时候就想从CSDN博客搬家到博客园了,当时还发了一个topic:博客搬家到博客园,想修改博客的发布时间。但是后来想要要讲200多篇文章一篇一篇复制过来,是在麻烦。现在对于想从CSND博客搬家到博客园的人,博客园提供一键搬家的功能。我测试了一下,从CSDN那边一共迁移了298片博客,不过对代码格式支持度不高。图片还是直接引用CSDN那边的图片。下面是搬家的文章列表。 成功导入298篇文章! 1 spket的安装使用以及加载ext-4.0.0.jsb2文件...导入成功 2 Redis快速入门...导入成功 3 JSONObject与JSONArray的使用...导入成功 4 mshup总结...导入成功 5 github使用总结...导入成功 6 使用Hibernate-tools中的hbm2java和hbm2ddl根据hbm文件自动生成pojo和数据库脚本...导入成功 7 PDF中添加页面/合并 PDF 内容...导入成功 8 java调用.net的webservice...导入成功 9 算法面试题总结...导入成功 10 java调用bat...导入成功 11 Ex...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19