浏览 6963 次
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-03-29
上面的实现可以有2中办法,一种是把“权限”信息直接传递到sql,也就是让持续化层知道这些“权限”信息。第二种是持续化层只负责数据load/save/count,而让中间层来“过滤”某些信息,提供视图服务。 大家肯定都知道是第一种方法好,可是实现当中要求把权限信息转换成SQL,最终体现到哪个SELECT语句中。从而导致持续化层和权限层互相关联,很难解偶。那么,所谓的AOP/关注分离等等设计原则,都成了狗P. OK,扯远了。 今天仔细研读hibernate manual,发现了这个<Class where="xxx"/>这个属性。 我想,这是不是Gavin在Hibernate中留下的一个入口,让我们处理类似“View”这样的功能的呢?可惜Hibernate manual语焉不详,偶又对Hibernate src不熟悉 请问? 有谁用过这个Where ? 后面跟的是怎样的SQL ? Hibernate src中那个类来处理这个Where ?或者 Hibernate src中怎么处理这个Where属性的? 请大虾不吝指教!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-04-16
"大家肯定都知道是第一种方法好" 这我就不同意
你这么认为好 怎么立马用了个“可是”把自己反驳了一下? “一种是把“权限”信息直接传递到sql”我对你怎么传递权限到sql还真搞不懂 认为第二种方法才好, 持久层就是持久层,老老实实的做好‘load/save/count’ 不要来干涉‘权限’这些业务逻辑 ‘从而导致持续化层和权限层互相关联,很难解偶’知道这些道理还说第一种方法好 真是该打 “那么,所谓的AOP/关注分离等等设计原则,” 我又迷惑了 AOP怎么你了 让你骂人家‘狗P’和你说的这些问题有啥干系 真为AOP叫屈 <Class where="xxx"/>这个属性 可以用来做 但我枉自揣度其本意决不是来处理“View”这样的功能而来的 它可以怎么用呢 我可以说点 比如在一个系统 有狗的类型 和猫的类型 而这些信息想放在一表中 class Dog{ private Type type; } class Cat{ private Type type; } class Type{ private int type_id; private String desc; } table Type: TYPE_ID NUMBER desc varchar2 1,大狗 2,小狗 3,白猫 4,黑猫 狗的类型只用1和2,猫的类型是3以后的 在狗和猫的hibernate mapping里 可以这样些 <class name="Dog" table="Type" where="type_id<3"/> <class name="Cat" table="Type" where="type_id>=3"/> 纯粹数据库的玩意 没啥意思 |
|
返回顶楼 | |
发表时间:2004-04-20
楼上的说对了.
|
|
返回顶楼 | |
发表时间:2004-04-25
感谢楼上的回复。
我自己碰到的问题其实是View究竟让谁去实现的问题,这也是一个设计上的问题,和Hibernate无关。 Hibernate Mapping 文件中Class元素的Where属性则是在我尝试解决上面的问题过程中,想到的一种解决办法: 让持续化层和业务层用一种体面的方法来交流view 的范围的信息,而不是把View范围在HQL中体现。 我想知道Hibernate是否已经有这种功能,前些日子看到了Hibernate3的scope "Virtualization" A number of important and interesting problems may be solved by presenting the user with a certain, filtered, subset of the data. For example, a user might want to see data valid at a particular point in time, or may have permissions to view data only in a particular region. Rather than forcing application code to specify this filter criteria in tedious query conditions, Hibernate 3 will allow the (parametrized) filters to be applied at the session level. 这就是我想要的。 呵呵。在Hibernate没出来之前,我得自己写这样的一个ViewInterceptor,然后根据调用者的权限信息,截获并且动态的修改HQL语句,从而达到所谓实现"View"的目的。 我无意贬低AOP和IOC这些思想技术,相反,我竭力推崇这些东西。我现在的框架就是用AOP来做Persistence和Security管理。 |
|
返回顶楼 | |