0 0

各位大哥,小弟想问下,在三层架构中的复杂条件查询时怎么实现的呢?我的意思是说数据访问层并不知道客户层传来的参数顺序或者说当条件更复杂的时候,应该怎么办,用Map5

各位大哥,小弟想问下,在三层架构中的复杂条件查询时怎么实现的呢?我的意思是说数据访问层并不知道客户层传来的参数顺序或者说当条件更复杂的时候,应该怎么办,用Map传似乎不能解决问题,将条件再封装成一个对象似乎可以,请各位指点迷津!!
DAO 
2009年12月18日 09:11

2个答案 按时间排序 按投票排序

0 0

不建议使用map,还是在控制层使用一个POJO(Plain Old java object)将你的条件进行封装吧,这样代码的可阅读性会比较好。
实际上很多框架都是这样做的,如struts就是将提交的表单映射到一个Bean中,struts2就可以将视图层传过来的参数直接映射到一个Bean的属性。如果从视图层传过来的数据是要存储和更新的,我们将封装的POJO称为DTO(Data Transfer Object);如果传过来的数据只是用来做查询条件的,我们称封装POJO为VO(Value Object)。

2009年12月18日 16:45
0 0

你的问的不单单是一个问题了
## 设计方面考虑
1. DAO是属于数据访问对象。
   [最好别在其中加入业务色彩] 这种思想是为了提高DAO复用性 ,
   DAO的入参和功能都应该尽可能的简单直观。返回结果则是 [数据传输对象] 
2. 业务层面负责数据访问的调用,需要首先对 [业务数据传输对象] 进行解析 ->
   调用数据访问功能 -> [数据传输对象] -> 组装成 [业务数据传输对象]


## 开发复杂度和性能上权衡
1. 根据项目复杂层度权衡 DAO -- Service,  
                        Service -- Action,
                        Action -- view
   之间数据交互对象复杂层度。
   
2. 复杂查询基于业务复杂度,往往会打破三层架构的初衷,在DAO中加入业务色彩,
   复用度很低。
3. 复杂查询往往牵涉更多性能问题,需要考虑 DB 中 Table 的设计。
   例如:
        查询无法使用一次sql完成,则会演变多次sql执行。
      (问题:SQL语句优化策略,
              考虑分步执行的必要性,
              数据与程序交互的数据量,
              是否应该使用存储过程,
              是否应该把部分计算压力,从数据库转嫁到应用服务
              [ps:毕竟只是是数据的仓库,但如果 DB 很强则就别浪费资源]
        )

2009年12月18日 15:03

相关推荐

    Winform通讯录(三层架构)

    简单的通讯录项目(C#+winform+SQL2005数据库,适合菜鸟学习),可实现增删改查功能,新增了设置头像、更改透明度、点击显示与收起列表等功能!!! 呵呵,小弟小试牛刀,希望各位同僚多多指教!!

    《猪小弟》游戏中数据操作及其功能实现

    《猪小弟》游戏中角色构造及其框架的搭建 & 《猪小弟》游戏中数据操作及其功能实现 两篇文章一起的,介绍了vc猪小弟游戏(就是以前黄卡机游戏里射箭打气球,射掉大灰狼那个)的开发,有兴趣者参考。

    《鼠小弟-想吃苹果的鼠小弟 (2).ppt

    总的来说,《想吃苹果的鼠小弟》不仅仅是一个趣味盎然的故事,更是一堂寓教于乐的人生课程,它教会孩子们认识自我,发挥潜能,学会合作,以及如何在困境中寻找解决办法。这本书对于孩子的成长有着深远的影响,是培养...

    标准工厂模式三层结构

    呵呵,废话不多说了,这个51没啥事做,就把我对三层结构和工厂模式的理解做了一个例子,很详尽的用代码方式展示给大家,不管是在代码编写上还是架构上都十分详细,要是你觉得小弟有什么做的不好的或者不完善的地方...

    小弟写的一个<<新闻发布系统>>

    在“小弟”的项目中,我们可以预见到这些基础功能的实现。 1. **新闻创建与编辑**:这是新闻发布系统的核心部分,允许用户(可能是管理员或内容创作者)输入新闻标题、正文、发布时间、分类等信息。这个过程涉及到...

    开源通用爬虫框架YayCrawler.zip

    点,后面的章幅会详细介绍并讲解它的实现,一图胜千言:1、分布式:YayCrawler就是一个大哥(Master)多个小弟(Worker)的架构(这种结构才是宇宙的真理),当然大哥还有一个小秘(Admin)和外界交往。2、通用性:...

    百万级数据分页存储+AspNetPager+GridView+DetailsView实现数据增删改查

    既有前辈整理的Repeater + AspNetPager + 分页存储对百万级数据查询(520万),也有小弟实现GridView + DetailsView + AspnetPager + 分页存储 对百万级数据的增删改查。 唉,老板只因为不够美观,摒弃了。感觉有些...

    百万级数据分页存储+AspNetPager+GridView+DetailsView实现数据增删改查(补上了临时表建立SQL语句)

    既有前辈整理的Repeater + AspNetPager + 分页存储对百万级数据查询(520万),也有小弟实现GridView + DetailsView + AspnetPager + 分页存储 对百万级数据的增删改查。唉,老板只因为不够美观,摒弃了。感觉有些用处...

    池递归。小弟发明的一种新的数据结构。

    问题的引入。 2个人打一个靶子。如果一个人10抢2中,1个10枪5中。 问:2个人齐射。中靶子的概率是多少。 问题深入: 如果是1,2,3,。。。n个人呢?...小弟我新发明的一种数据结构。可以解决这个问题。

    《猪小弟》游戏中角色构造及其框架的搭建

    《猪小弟》游戏中角色构造及其框架的搭建 & 《猪小弟》游戏中数据操作及其功能实现 两篇文章一起的,介绍了vc猪小弟游戏(就是以前黄卡机游戏里射箭打气球,射掉大灰狼那个)的开发,有兴趣者参考。

    哪位大神帮忙编个卡尔曼滤波的数据处理程序小弟万分感谢-数据.txt

    哪位大神帮忙编个卡尔曼滤波的数据处理程序 有一百期监测数据 就是需要有卡尔曼滤波做一下数据的消噪 输出处理后的数据 还有原数据与处理后数据的图像就行了 小弟万分的感谢 数据在附件 再次谢谢 !!!! 数据...

    架构师必看的书籍清单

    软件架构师书籍收藏是架构师职业发展的必备 Conditions,以下是架构师必看的书籍清单,分为软件架构师篇、架构模式篇、特定领域模式篇、RUP/UML 篇和闲书篇五大部分。 软件架构师篇: 1. 《Software Architect ...

    Linux C多线程服务的访问数据库的实现

    1)Linux 下C实现的多线程架构,已经实际应用的很多项目,小弟刚刚完成由WIndows到Linux的移植(唉,以前一点都没学过) 2)支持多线程用户访问,多线程日志,支持ODBC方式的数据库访问(db2只举了一个查询的例子) ...

    (中小学教育)中班健康猪小弟洗澡.doc

    总的来说,《猪小弟洗澡》这堂课结合了故事、音乐、讨论和动作模仿等多种教学手段,有效地传递了健康教育的信息,使孩子们在轻松愉快的环境中建立了良好的个人卫生习惯,体现了中小学教育中寓教于乐的教学理念。

    格式化小弟实用工具下载

    标题中的“格式化小弟实用工具下载”暗示这是一款专门用于格式化存储设备,如U盘的软件。在日常使用中,我们可能会遇到U盘感染病毒、数据损坏或系统不识别等问题,这时需要借助这样的工具来解决问题。描述中的“有...

    SQL Server 到 Oracle 的SQL 语法自动翻译器源码

    这是小弟为了一个Oracle项目的应急之作,我们的系统(Delphi的三层架构)一直运行在sql server下面, 当时客户指定需要的是支持Oracle版本的应用系统, 这个系统不小,如果要将里面的SQL全部转换为Oracle,需要...

    想吃苹果的鼠小弟教学设计说明.doc

    《想吃苹果的鼠小弟》是一本极富教育意义的儿童绘本,不仅因其生动的故事情节吸引着孩子们的注意力,更因其深具内涵的主题价值——勇气、尝试、团队协作与分享——成为低年级教学中的宝贵资源。对于教师而言,将这样...

    Java数据结构和算法中文第二版(1)

    因为小弟权限不够,所以分开两个帖子上存,资源名称分别是: Java数据结构和算法中文第二版(1) Java数据结构和算法中文第二版(2) 【内容简介】 本书可帮助读者: 通过由基于JAVA的演示所组成的可视专题讨论来掌握...

Global site tag (gtag.js) - Google Analytics