查询的条件和需要什么样的结果如何通知后台服务类的问题
2008-05-27 23:21
363 查看
今天是设计培训的最后一天,在讲依赖倒置的问题的时候,突然说出一句话:No User,No Interface
此时想起一个问题,那就是界面查询中条件和结果应该如何传递给后台服务类的问题,一时不禁呆住。
前提:
界面知道查询条件和需要什么样的结果,因此必须要由他将有关的需求传递给后台服务类。
例如:我们需要根据工龄查询工龄在10年以上的员工,需要显示员工的姓名、部门、编号。
我应该如何传递这个信息,如果我们将需要显示这个信息的界面命名为:UIWorkAgeSearch
对应的UI服务的接口为:IWorkAgeSearchService
对应的服务为 WorkAgeSearchService
如图:
问题是界面应该如何告诉服务类它需要什么要的返回数据呢?
一个方式:
我们增加一个WorkAgeSearchData的数据接口,要求返回的数据必须是该接口的一个实现。
或者定义一个与界面传递的数据结构,来进行本工作。
可我担心的是,现在的系统UI是客户最喜欢修改的,如果他想增加员工的Code,那我就不得不修改UIWorkAgeSearch、IWorkAgeSearchData、WorkAgeSearchService等部分。
这明显将这三者粘连到一起,粘连的臭味明显。
方式二:
一些人喜欢在UI里面将SQL组装好,然后传递到统一的SQLHelper类中执行。返回DataSet或者DataTable。
这是我不喜欢的,一:这导致界面层的人员必须了解SQL语法、必须知道后台使用啥数据库,对数据库方言也要了解等等。二:限制了我必须使用数据库,我可能想使用Hibernate来缓存数据。三:可能查询并不这么简单,组装SQL就可以了,可能需要从某个服务先获得某些数据,然后才能执行。
方式三:
在配置文件中定义好条件和需要的结果,让后台服务读取这个配置,我想几乎所有的查询都会涉及到多个实体的关系,所以这个定义会否过于复杂,那会不会复杂到干脆将SQL语句准备好这个程度呢。
方式四:
在配置文件中准备好SQL语句,条件嘛通过配置转递。
这几种方式,我都不喜欢,不知道大家的看法如何。
我的意见是:查询条件与结果都是界面所需要的,因此,一定是界面告诉后台服务类的,关键是后台服务类如何能够不和界面有如此尽力的连接呢?
请各位支招。
此时想起一个问题,那就是界面查询中条件和结果应该如何传递给后台服务类的问题,一时不禁呆住。
前提:
界面知道查询条件和需要什么样的结果,因此必须要由他将有关的需求传递给后台服务类。
例如:我们需要根据工龄查询工龄在10年以上的员工,需要显示员工的姓名、部门、编号。
我应该如何传递这个信息,如果我们将需要显示这个信息的界面命名为:UIWorkAgeSearch
对应的UI服务的接口为:IWorkAgeSearchService
对应的服务为 WorkAgeSearchService
如图:
问题是界面应该如何告诉服务类它需要什么要的返回数据呢?
一个方式:
我们增加一个WorkAgeSearchData的数据接口,要求返回的数据必须是该接口的一个实现。
或者定义一个与界面传递的数据结构,来进行本工作。
可我担心的是,现在的系统UI是客户最喜欢修改的,如果他想增加员工的Code,那我就不得不修改UIWorkAgeSearch、IWorkAgeSearchData、WorkAgeSearchService等部分。
这明显将这三者粘连到一起,粘连的臭味明显。
方式二:
一些人喜欢在UI里面将SQL组装好,然后传递到统一的SQLHelper类中执行。返回DataSet或者DataTable。
这是我不喜欢的,一:这导致界面层的人员必须了解SQL语法、必须知道后台使用啥数据库,对数据库方言也要了解等等。二:限制了我必须使用数据库,我可能想使用Hibernate来缓存数据。三:可能查询并不这么简单,组装SQL就可以了,可能需要从某个服务先获得某些数据,然后才能执行。
方式三:
在配置文件中定义好条件和需要的结果,让后台服务读取这个配置,我想几乎所有的查询都会涉及到多个实体的关系,所以这个定义会否过于复杂,那会不会复杂到干脆将SQL语句准备好这个程度呢。
方式四:
在配置文件中准备好SQL语句,条件嘛通过配置转递。
这几种方式,我都不喜欢,不知道大家的看法如何。
我的意见是:查询条件与结果都是界面所需要的,因此,一定是界面告诉后台服务类的,关键是后台服务类如何能够不和界面有如此尽力的连接呢?
请各位支招。
相关文章推荐
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- 如何从页面输入SQL查询条件得到后台结果返回前台页面
- 如何对存储过程返回的结果进行条件查询
- linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)
- 【转】如何解决plsql查询oracle数据库语句where条件带有中文无法匹配结果
- linq to sql中,如何解决多条件查询问题,答案,用表达式树!
- SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中
- JDBC查询条件中包含中文,无查询结果(编码问题)
- MySQL 中文显示乱码以及中文查询条件返回0条结果的问题解决
- MySqlCommand查询条件中包含中文没有结果的问题
- 项目问题反馈:对后台查询的结果列表进行处理:计算平均值,改变小数点位数
- CodeIgniter需要注意错写查询条件导致数据库索引失效的问题
- 数据值为NULL,导致条件查询不到正确结果,ISNULL函数的使用解决问题
- Mysql数据库对varchar类型字段进行条件查询时结果相关问题
- 请教oschina缓存设计和效率问题(某些表查询后即需要更新某字段的情况如何缓存)
- linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)
- linq to sql 中,如何解决多条件查询问题,答案,用表达式树!
- ADF:如何使用VO处理查询条件的值属于某一动态值列表的问题
- Promise解决某个条件需要多个异步结果的问题