作者 内容
 socoolliqiang   三层结构中个性化需求实现的问题

有一些个性化的东西,比如对一张表的检索,需要根据各种不同的条件进行检索,如果在数据层来实现是比较方便的,可以通过将这些条件构造成相应的SQL语句来实现,不过,我觉得,这些个性化的东西应该在商业逻辑层来实现,数据层不需要知道这些个性化的需求,而在商业逻辑层实现这些功能比较麻烦,而且效率也不高,不知该怎么做,这些个性化的需求到底应该在哪层实现?请各位大虾指教!
 02/01/28 14:23 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 socoolliqiang   回复: 三层结构中个性化需求实现的问题

难道没有人可以帮帮我吗,5555555555~~~~~~~~~~
 02/01/29 09:05 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 wangkaishan   回复: 三层结构中个性化需求实现的问题

象这种需求,把它完全放在逻辑层或数据层都有问题。如果数据查询在系统中占的比重较大,可以考虑在数据层采用动态SQL语句来实现,即事先定义一些属性(可以放在表里),逻辑层调用时将有关属性值传递过来,数据层据此动态生成SQL语句。这样可以将很业务的逻辑与数据操作分离开,但效率会受一定的影响。
 02/01/29 09:33 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 joy_wind  能说说你是如何划分数据层和逻辑层的么?

 02/01/29 10:33 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 socoolliqiang   我是这样划分数据层和逻辑层的

我是这样划分数据层和逻辑层的:

数据层负责对数据库的访问,包括数据的读取,存储,和修改,还包括从数据库到对象的O/R Maping,理想状态下,数据层只会包括对数据的一些基本的操作,象create,update,retrieve等,而且,这些操作都是针对整体对象的,而没有一些个性化的功能,比如,对某个字段做update,根据某几个字段做select。而就是说,数据层只知道访问数据库

而逻辑层的功能就比较多了,它应该是三层结构中的核心层,它负责根据具体的需求,调用数据层,实现具体的数据的操作,而且,要将这些操作的结果返回给表现层,象上面所说的个性化的功能,也应该在这层实现(但是好像实现起来比较困难,所以,实际上这些功能有好多是在数据层实现了,我觉得这样影响了数据层的封装性,而且,不易维护)。
 02/01/29 11:10 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 joy_wind  你的数据层应该就是一个持久层(persistent layer)...

你的数据层应该就是一个持久层(persistent layer)。我倾向于你的想法。以下是我的观点:
在面向对象的系统中,数据层是关系数据库访问的代理,我们希望通过它与关系数据库的结合实现面向对象数据库的功能(参见http://www.objectarchitects.de/ObjectArchitects/orpatterns/),所以,作为基本功能的条件查询、更新等操作应该由数据层来实现;从这个角度讲,数据层(即持久层)的设计是需要精心考虑的。我现在用java,它具有反射(reflection)能力,所以也许可以通过它实现我的想法(没有认真实现过)。
你可以看看这本书《Reflective CRUD》,我把它放在文件共享里。希望对你有帮助。
 02/01/29 12:19 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 javalover   建议放在表示层

个性化的检索可放在表示层。
需要向表示层提供的是一个检索实体和一个过滤器。
个性化的检索就好象用户要做一件自己的东西,我们需要提供的一个待加工的原料,如木头;和一个能方便它随心加工的工具,如斧头。
用户想将这块木头削成什么样子,他就会通过斧头自己去削,
当然木头不能太复杂了,用户不想知道这块木料的分子式,
另外斧头,他一看就知道如何用,而不用考虑先装上电池,打开开关。。。
 02/01/29 12:58 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 socoolliqiang   回复: 你的数据层应该就是一个持久层(persistent layer)...

谢谢,你给我的那篇文章我看了,那里面大部分的功能我以前就已经做出来了,不过,还是给了我一些启示。谢谢!

那篇文章中的supperClass中的select方法,我觉得还可以做的更加好一些,它只能对PK的字段进行检索,我觉得完全可以做成根据各个字段进行检索。

希望以后多交流,谢谢你对我的帮助。
 02/01/29 14:27 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 w_rose   看起来你的问题在于没有做分析。

因为只有结合数据库系统编程时才需要考虑SQL。
分析以及对象设计中,需要了解用户的帐本的划分、每个帐本包括哪些项目、每个项目对应哪些原单据、从每一张原始单据记账到帐本上的方法如何。这是最能让软件人员兴奋的。至于SQL,那时为了给用户一个产品必须的过程。分析如果经常变来变去,及时书上的SQL理论很简单,也无法正常应用的实际项目中。
 02/01/29 16:57 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 kingcraft  回复: 三层结构中个性化需求实现的问题

关键在于你的需求分析。
 02/01/29 18:47 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首