`
lllyq
  • 浏览: 34683 次
  • 性别: Icon_minigender_1
  • 来自: Shanghai
社区版块
存档分类
最新评论

基于hibernate的开源通用查询框架 -- bba96介绍

    博客分类:
  • java
阅读更多

新开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)

分享到:
评论
49 楼 vickey 2008-06-29  
不要都忙着想实现,性能如何很重要,对几十万条以上记录的表进行分页性能如何?有没有相关的压力测试数据?
48 楼 vlinux 2008-06-29  
<p style='text-align: center;'><span style=''><strong>授之以鱼不如授之以渔</strong></span></p>
<p> </p>
<p> </p>
47 楼 fangsimple 2008-06-29  
而且现在都找不到下载了の
46 楼 bjheby 2008-06-19  
我觉得不怎么样,根本就不像是一个开源的东东,源码没有任何注释。不是一个合格的东东
45 楼 soming 2008-06-19  
好像不能下载????
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
43 楼 lllyq 2007-11-15  
hua0424 写道
呵呵,原来是BUG啊。。。还有一点,在看findByExpQL的时候发现会把传入的语句变成小写,请问目的是什么?我看了一下,好象这个是执行HQL的,转成小写后就不对了(类名区别大小写)

多谢,看了一下,确实是有一个bug,是在分页时计算count的时候作了一个toLowerCase的操作,今天一并fix掉
42 楼 hua0424 2007-11-15  
呵呵,原来是BUG啊。。。还有一点,在看findByExpQL的时候发现会把传入的语句变成小写,请问目的是什么?我看了一下,好象这个是执行HQL的,转成小写后就不对了(类名区别大小写)
41 楼 lllyq 2007-11-15  
hua0424 写道
根据就是在圈子里下载的 bba96-src-2.3.0中,GenericsEntityManager是这么定义的:
public class GenericsEntityManager<T extends Persistable> extends AbstractEntityManager

这个类包含了大部分操作吧,对泛类型T的要求是必须实现Persistable接口


哦,对的,这个依赖忘记去掉了,谢谢提醒,这个Persistable是空接口,我晚点提交一下代码,去掉这个依赖
40 楼 hua0424 2007-11-15  
根据就是在圈子里下载的 bba96-src-2.3.0中,GenericsEntityManager是这么定义的:
public class GenericsEntityManager<T extends Persistable> extends AbstractEntityManager

这个类包含了大部分操作吧,对泛类型T的要求是必须实现Persistable接口
39 楼 lllyq 2007-11-12  
hua0424 写道
用这个东西居然要求你的pojo全都要继承它的一个接口persitable,估计就这一点就没人用它了

你从哪里得出的这个结论?bba96基本框架没有对pojo做任何要求。
38 楼 hua0424 2007-11-08  
用这个东西居然要求你的pojo全都要继承它的一个接口persitable,估计就这一点就没人用它了
37 楼 jojoy_828 2007-09-07  
还未用过,学习中,楼主能否发一个具体点的使用实例呢?
36 楼 yeso 2007-08-17  
下载了,好好看看先,公司有一个项目有相关的技术需求!!
35 楼 peacess 2007-08-17  
谢谢你的回复,那两个连接我都看了
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1700  的实现不太好,整个having条件的参数都自己组装,就像就存在不同数据处理不同的问题,还有那个project一定要放到最后面一个,不然会出错(因为他直接写入的having的条件)
第二个的实现方式倒是可以,不过要改hibernate的包,这一点不太好,每一个新的版本都要人工改一次代码,再进行测试
为什么这个功能hibernate不提供呢?
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可以用
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
32 楼 monkeyhero 2007-08-03  
<p>说一下个人看法,对于用hibernate的hql,基本的单表查询是非常便利快捷的,也是值得向项目组成员推荐的用法。但是在业务逻辑复杂、关联表多的模块中,用hql无异于给自己增加很多麻烦--构造一个高效的查询语句就会费很多功夫(毕竟一个项目组里的成员水平总会参差不齐的)。所以我建议对于单表查询通过findByExample()实现,而其他的查询还是用标准化SQL,毕竟hibernate的主要亮点还是在对象关系的管理中。</p>
31 楼 lllyq 2007-08-02  
minimu 写道
不知道对于没有显示定义的级联查询怎么处理的?
比如一个用户有一个部门属性,当然部门里面是另外一个表里面的,如果这两个表有外键关联倒是没有什么关系了,但是现在很多人设计DB的时候不喜欢去(显示的)定义这个外键(虽然一般会有文档说明,但是在DB这个外键是不存在的)

不好意思:还没有来得及仔细的看


即使DB不定义外键,hibernate也可以关联映射,那就没问题,但如果没有定义hibernate关联,这个情况hibernate也只能对用户的部门属性做直接查询,没法做部门其他属性做关联查询,bba96基于hibernate,自然也处理不好

30 楼 minimu 2007-08-02  
不知道对于没有显示定义的级联查询怎么处理的?
比如一个用户有一个部门属性,当然部门里面是另外一个表里面的,如果这两个表有外键关联倒是没有什么关系了,但是现在很多人设计DB的时候不喜欢去(显示的)定义这个外键(虽然一般会有文档说明,但是在DB这个外键是不存在的)

不好意思:还没有来得及仔细的看

相关推荐

Global site tag (gtag.js) - Google Analytics