struts2+hibernate+spring配置管理(二)——DAO层(一)
来源:互联网 发布:vmware 14 for linux 编辑:程序博客网 时间:2024/06/05 07:23
前面时间一直忙于赶项目,忽略了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){
- .....
- }
- }
- //other EntityDAO
- .....
使用这种设计思想,很好的解决了前面的瓶颈,但它也有缺点,破坏了面向对象的封装性。
两个设计思想,我们该如何取舍呢?其实如果了解泛型的话,就迎刃而解了,于是,就有了第三种解决方案如下:
java 代码
- abstract public class DAO
{ - 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
,提供分页函数和若干便捷查询方法,并对返回值作了泛型类型转换。
经过讨论后,大家应该有了比较好的思路了,具体代码碍于篇幅,下一篇贴出。
- struts2+hibernate+spring配置管理(二)——DAO层(一)
- struts2+hibernate+spring配置管理(二)——DAO层(一)
- struts2+hibernate+spring配置管理(三)——DAO层(二)
- struts2+hibernate+spring配置管理(三)——DAO层(二)
- struts2+hibernate+spring配置管理(一)——配置文件
- struts2+hibernate+spring配置管理(一)——配置文件
- struts2+hibernate+spring配置管理(一)——配置文件 [转贴]
- struts2+hibernate+spring配置管理(一)——配置文件
- struts2+hibernate+spring配置管理(一)——配置文件
- struts2+hibernate+spring配置管理(一)——配置文件
- Struts2+Spring+Hibernate step by step 03 整合Spring之一(在DAO层验证用户名和密码)
- ssh框架整合:struts2+hibernate+spring(二):编写domain,dao,service,
- struts2 hibernate spring配置管理(转)
- 开发自己的DAO层公共类(Spring+Hibernate)
- Struts2+Spring+Hibernate In Action(二)
- Struts2+Hibernate+Spring框架搭建(二)
- Struts2+Spring+Hibernate In Action(一)
- Struts2+Hibernate+Spring框架搭建(一)
- 北京确诊1例人感染禽流感致死病例
- 掌握 Ajax,第 1 部分: Ajax 入门简介
- struts2+hibernate+spring配置管理(一)——配置文件
- PHP OCI方式连接oracle
- 让线程休息的几种方式
- struts2+hibernate+spring配置管理(二)——DAO层(一)
- 力争应届高校毕业生就业率70%
- struts2+hibernate+spring配置管理(三)——DAO层(二)
- HackBase
- 详解WINCE的控制面板——转载
- 左连接/右连接/全连接
- java.net3des差异及互通
- 我说云计算
- Array 和 ArrayCollection 区别