基于hibernate的开源通用查询框架 -- bba96介绍新开bba96圈子 http://bba96.group.iteye.com/bba96 框架当
基于hibernate的开源通用查询框架 -- bba96介绍
新开bba96圈子 http://bba96.group.iteye.com/
bba96 框架当前版本 2.2,包含:
bba96-core 核心框架,封装Hibernate Criteria,提供方便的查询以及分页支持,查询参数
bba96-struts 基于Struts2的开发框架,依赖core,提供便捷的CRUD以(分页支持),通过设置form的参数就可以实现复杂的分页查询
bba96-security 安全框架,依赖core,借助core query的简捷实现数据权限(未更新)
项目主页:http://bba96.dev.java.net
bba96下载:https://bba96.dev.java.net/servlets/ProjectDocumentList?folderID=7768&expandFolder=7768&folderID=7768
或者在圈子里下载:http://bba96.group.iteye.com/group/share
如何使用bba96
1. bba96-core查询例子(未完)
对象关系如上图 Teacher-Group, Group-Student, Student-Exercise分别是one-to-many关系,Teacher-Student 则是many-to-many的关系
?java代码显示有问题,还是上图吧
优势在于
1. 分页信息的支持(自动count相应条件的total count)
2. 查询字段简化,不用关心关联信息,包括Projections中的order, groupby都可以用
对exercise的查询,伪码如 where student:s.group:g.level = 3 and student:s.teacher:t.name = 'wang' order by stduent:s.name 这里面有很多个关联,跟hql/sql相比,bba96 query 更面向对象,你只需要关心业务逻辑
3. 统一的查询入口,包括统一的查询参数结构,全面hql/sql的parse还是比较困难的,而bba96的query结构比较简单(复杂的都封装起来了),你可以运行期重构query,会用aop的同学应该有很多想像空间,例如数据权限
注:2.3.0版本已加入安全框架(2007-10)
30 楼 minimu 2007-08-02 不知道对于没有显示定义的级联查询怎么处理的?
比如一个用户有一个部门属性,当然部门里面是另外一个表里面的,如果这两个表有外键关联倒是没有什么关系了,但是现在很多人设计DB的时候不喜欢去(显示的)定义这个外键(虽然一般会有文档说明,但是在DB这个外键是不存在的)
不好意思:还没有来得及仔细的看 31 楼 lllyq 2007-08-02 minimu 写道不知道对于没有显示定义的级联查询怎么处理的?
比如一个用户有一个部门属性,当然部门里面是另外一个表里面的,如果这两个表有外键关联倒是没有什么关系了,但是现在很多人设计DB的时候不喜欢去(显示的)定义这个外键(虽然一般会有文档说明,但是在DB这个外键是不存在的)
不好意思:还没有来得及仔细的看
即使DB不定义外键,hibernate也可以关联映射,那就没问题,但如果没有定义hibernate关联,这个情况hibernate也只能对用户的部门属性做直接查询,没法做部门其他属性做关联查询,bba96基于hibernate,自然也处理不好
32 楼 monkeyhero 2007-08-03 <p>说一下个人看法,对于用hibernate的hql,基本的单表查询是非常便利快捷的,也是值得向项目组成员推荐的用法。但是在业务逻辑复杂、关联表多的模块中,用hql无异于给自己增加很多麻烦--构造一个高效的查询语句就会费很多功夫(毕竟一个项目组里的成员水平总会参差不齐的)。所以我建议对于单表查询通过findByExample()实现,而其他的查询还是用标准化SQL,毕竟hibernate的主要亮点还是在对象关系的管理中。</p> 33 楼 peacess 2007-08-16 作者:首先觉得你这个通用查寻作的不错。我现在有问题要问。
1,如下的sql语句
select * from (select a.name,a.value from a where a.name="12")
说明:把整个查寻结果作为另一个“表”,再进行查寻
2,group by 、having。有如下语句
select * from a group by a.name having count(*) > 1
此实现用hql没有问题,但要用critera怎么实现?
peacess@163.com
qq:64407724 34 楼 lllyq 2007-08-17 1.没试过
2.criteria还未实现having,你可以参考
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1043
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1700
其中1700似乎在oracle10G可以用 35 楼 peacess 2007-08-17 谢谢你的回复,那两个连接我都看了
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1700 的实现不太好,整个having条件的参数都自己组装,就像就存在不同数据处理不同的问题,还有那个project一定要放到最后面一个,不然会出错(因为他直接写入的having的条件)
第二个的实现方式倒是可以,不过要改hibernate的包,这一点不太好,每一个新的版本都要人工改一次代码,再进行测试
为什么这个功能hibernate不提供呢?
36 楼 yeso 2007-08-17 下载了,好好看看先,公司有一个项目有相关的技术需求!! 37 楼 jojoy_828 2007-09-07 还未用过,学习中,楼主能否发一个具体点的使用实例呢? 38 楼 hua0424 2007-11-08 用这个东西居然要求你的pojo全都要继承它的一个接口persitable,估计就这一点就没人用它了 39 楼 lllyq 2007-11-12 hua0424 写道用这个东西居然要求你的pojo全都要继承它的一个接口persitable,估计就这一点就没人用它了
你从哪里得出的这个结论?bba96基本框架没有对pojo做任何要求。 40 楼 hua0424 2007-11-15 根据就是在圈子里下载的 bba96-src-2.3.0中,GenericsEntityManager是这么定义的:
public class GenericsEntityManager<T extends Persistable> extends AbstractEntityManager
这个类包含了大部分操作吧,对泛类型T的要求是必须实现Persistable接口 41 楼 lllyq 2007-11-15 hua0424 写道根据就是在圈子里下载的 bba96-src-2.3.0中,GenericsEntityManager是这么定义的:
public class GenericsEntityManager<T extends Persistable> extends AbstractEntityManager
这个类包含了大部分操作吧,对泛类型T的要求是必须实现Persistable接口
哦,对的,这个依赖忘记去掉了,谢谢提醒,这个Persistable是空接口,我晚点提交一下代码,去掉这个依赖 42 楼 hua0424 2007-11-15 呵呵,原来是BUG啊。。。还有一点,在看findByExpQL的时候发现会把传入的语句变成小写,请问目的是什么?我看了一下,好象这个是执行HQL的,转成小写后就不对了(类名区别大小写) 43 楼 lllyq 2007-11-15 hua0424 写道呵呵,原来是BUG啊。。。还有一点,在看findByExpQL的时候发现会把传入的语句变成小写,请问目的是什么?我看了一下,好象这个是执行HQL的,转成小写后就不对了(类名区别大小写)
多谢,看了一下,确实是有一个bug,是在分页时计算count的时候作了一个toLowerCase的操作,今天一并fix掉 44 楼 lllyq 2008-03-26 将CVS的更新打包整理为2.3.1发布,并增加了两个example,虽然是for 1.x的,但是用法差不多,可以作为参考,差别在于2.0增加了范型扩展,权限支持,webwork部分升级至struts2,以及移除model接口依赖等
http://bba96.group.iteye.com/group/share 45 楼 soming 2008-06-19 好像不能下载???? 46 楼 bjheby 2008-06-19 我觉得不怎么样,根本就不像是一个开源的东东,源码没有任何注释。不是一个合格的东东 47 楼 fangsimple 2008-06-29 而且现在都找不到下载了の 48 楼 vlinux 2008-06-29 <p style='text-align: center;'><span style=''><strong>授之以鱼不如授之以渔</strong></span></p>
<p>?</p>
<p>?</p> 49 楼 vickey 2008-06-29 不要都忙着想实现,性能如何很重要,对几十万条以上记录的表进行分页性能如何?有没有相关的压力测试数据?