基于hibernate的开源通用查询框架 -- bba96介绍
关键字: hibernate新开bba96圈子 http://bba96.group.javaeye.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.javaeye.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)
评论
授之以鱼不如授之以渔
http://bba96.group.javaeye.com/group/share
多谢,看了一下,确实是有一个bug,是在分页时计算count的时候作了一个toLowerCase的操作,今天一并fix掉
public class GenericsEntityManager<T extends Persistable> extends AbstractEntityManager
这个类包含了大部分操作吧,对泛类型T的要求是必须实现Persistable接口
哦,对的,这个依赖忘记去掉了,谢谢提醒,这个Persistable是空接口,我晚点提交一下代码,去掉这个依赖
public class GenericsEntityManager<T extends Persistable> extends AbstractEntityManager
这个类包含了大部分操作吧,对泛类型T的要求是必须实现Persistable接口
你从哪里得出的这个结论?bba96基本框架没有对pojo做任何要求。
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1700 的实现不太好,整个having条件的参数都自己组装,就像就存在不同数据处理不同的问题,还有那个project一定要放到最后面一个,不然会出错(因为他直接写入的having的条件)
第二个的实现方式倒是可以,不过要改hibernate的包,这一点不太好,每一个新的版本都要人工改一次代码,再进行测试
为什么这个功能hibernate不提供呢?
2.criteria还未实现having,你可以参考
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1043
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1700
其中1700似乎在oracle10G可以用
说一下个人看法,对于用hibernate的hql,基本的单表查询是非常便利快捷的,也是值得向项目组成员推荐的用法。但是在业务逻辑复杂、关联表多的模块中,用hql无异于给自己增加很多麻烦--构造一个高效的查询语句就会费很多功夫(毕竟一个项目组里的成员水平总会参差不齐的)。所以我建议对于单表查询通过findByExample()实现,而其他的查询还是用标准化SQL,毕竟hibernate的主要亮点还是在对象关系的管理中。
比如一个用户有一个部门属性,当然部门里面是另外一个表里面的,如果这两个表有外键关联倒是没有什么关系了,但是现在很多人设计DB的时候不喜欢去(显示的)定义这个外键(虽然一般会有文档说明,但是在DB这个外键是不存在的)
不好意思:还没有来得及仔细的看
即使DB不定义外键,hibernate也可以关联映射,那就没问题,但如果没有定义hibernate关联,这个情况hibernate也只能对用户的部门属性做直接查询,没法做部门其他属性做关联查询,bba96基于hibernate,自然也处理不好
比如一个用户有一个部门属性,当然部门里面是另外一个表里面的,如果这两个表有外键关联倒是没有什么关系了,但是现在很多人设计DB的时候不喜欢去(显示的)定义这个外键(虽然一般会有文档说明,但是在DB这个外键是不存在的)
不好意思:还没有来得及仔细的看
- 浏览: 14967 次
- 性别:

- 来自: Shanghai

- 详细资料
搜索本博客
我的相册
共 8 张
最近加入圈子
最新评论
-
基于hibernate的开源通用 ...
不要都忙着想实现,性能如何很重要,对几十万条以上记录的表进行分页性能如何?有没有 ...
-- by vickey -
基于hibernate的开源通用 ...
授之以鱼不如授之以渔
-- by vlinux -
基于hibernate的开源通用 ...
而且现在都找不到下载了の
-- by fangsimple -
Rlayout,erb定义layout ...
更新了,加了支持field tag的主题模板的功能
-- by lllyq -
基于hibernate的开源通用 ...
我觉得不怎么样,根本就不像是一个开源的东东,源码没有任何注释。不是一个合格的东东
-- by bjheby






评论排行榜