论坛首页 Java企业应用论坛

七年付出,新Java开源框架:BabyFish

浏览 13273 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-10-24  
大家好,从2008年开始我利用所有业余时间创造一个开源项目,几天前终于完成,发布在github上。https://github.com/babyfish-ct/babyfish
另外,框架主体代码部分已经上传至Maven Central Repository

项目本身有详细的文档和例子程序,这里罗列一下重点

(1)ObjectModel4Java,改善Java开发,创造完美的域对象模型
        (a) 支持.NET风格的事件和委托
        (b) 支持无需测试编译时报错的(I18N)国际化
        (c) 支持XCollection集合框架,核心功能是不稳定元素(Unstable Collection Elements),即便元素(键)被加入到set(map)中以后,也可以修改元素(键),持有这些元素(键)的集合将会自动调整
        (d) 支持MACollection集合框架(继承于XCollection),类似于数据库的触发器,集合在被修改时会发出事件通知,核心功能是时间冒泡(Bubble Event),通过迭代器或视图(比如List.subList, SortedMap.subMap)简介修改集合时,所触发的事件会层层想上冒泡传递,直到最顶层的原始集合对象发出事件通知为止。
        (e) ObjectModel4Java,纯Java的域对象模型编程API,支持两端能互相自动通知的对象关系,当一端修改是,另外一端会自动修改。


(2)ObjectModel4JPA,
        (a) 替换Hibernate的延迟机制,使ORM实体类支持ObjectModel
        (b)支持Maven插件在编译时修改实体类的字节码,开发人员只需要按照最简单的原则书写实体类,就能自动编译出具备ObjectModel4JPA的实体类。


(3)大幅度增强JPA/Hibernate,顺带将.NET领域的ORM框架“ADO.NET Entity Framework”的优点融合并入JPA/Hibernate.
         (a) 支持BabyFishJPA-Criteria,更智能的JPA Criteria实现,能自动优化生成的SQL
         (b) 支持QueryPath,一种强类型的的路径的,通过表示层->业务层->数据层传递到最下面,能
               (i)动态地,按照任意广度和深度自由抓取(反延迟)对象关系
               (ii) 动态地,在任意广度和深度的对象上抓取(反延迟)非关系属性(如果大字段)
               (iii)动态地,对查询结果或集合关系进行任意广度和深度的排序
         (c) 针对Oracle数据库扩展方言,支持DistinctLimitQuery,能解决Hibernate当分页查询带集合抓取(Collections Fetches)行为的情况下不得不使用内存分页的问题。
   发表时间:2015-10-27  
强大啊,我去看看
0 请登录后投票
   发表时间:2015-10-28  
告诉大家两件事
   (1)和Hibernate负责人Steve Ebersole有了初步交涉,对方粗略了解后非常感兴趣,估计一段时间后,等它们有了更多了解后会有进一步交涉。
   (2)由于框架规模庞大,所以会在优酷上推出一系列教程视频。
    目前第一个初步体验视频是:http://v.youku.com/v_show/id_XMTM3MTIxMzk0MA==.html
由于第一次使用youku,传上去后变得非常模糊,不知道是视频格式问题还是优酷高清编码的滞后性导致的。如果一端时间后仍然模糊,我会重新录制。
0 请登录后投票
   发表时间:2015-10-28  
7年啊,楼主怎么坚持下来的
0 请登录后投票
   发表时间:2015-10-28  
楼主啊,你没介绍他是干什么的啊
0 请登录后投票
   发表时间:2015-10-28  
楼主 建一个群或者社区,技术交流,万一这个火了呢,请楼主放到开源中国上面去,东西活不活需要一个成熟的社区,不然你写的再好也没有人用,期望认识楼主这样优秀的人
0 请登录后投票
   发表时间:2015-10-28  
对aa1asdasd提出的问题,我会认真考虑,可能没有讲清楚。今天下班回家后,我会就模糊问题(粗体字经youku压缩后没法看)重新录制,这一次录制前我会认真思考如何给出一个清晰的定义

特别感谢zhunengfei的建议,我已经让中国开源收录了,但OSChina缺乏Tag支持,新项目被搜索到的几率如同大海捞针。我考虑视频同时出中文版和英文版,分别针对youku和youtube。向来想去,视频才是最好的方式,毕竟,听众朋友只需要一个屏幕一双眼一双耳就可以了,视频特别方便。
0 请登录后投票
   发表时间:2015-10-28  
楼主做个简单介绍项目的用途啊
0 请登录后投票
   发表时间:2015-10-28  
好的
    对开发人员而言,开发一个独立的模块是一件非常容易的事情,但要建立彼此有关系且能通过关系进行彼此互动的对象网却是一件非常困难的事。BabyFish框架是一个对象关系管理框架(很自然地,在极其类似的对象关系映射领域的的Hibernate会被我增强)

    本项目的demo很多,系统学习需要时间,但如果不求面面俱到,而是想在最短的时间内快速了解本框架最亮眼的大功能,以下4个测试类可以胜任

一、上层功能
    1、${babyfish-dir}/demo/babyfishdemo-om4java/src/test/java/org/babyfishdemo/om4java/l2ir/ObjectModelOfListAndIndexedReferenceTest.java。此类是最强的单个类功能演示,以纯Java数据类(No JPA)的方式,演示了如果通过简单的声明式的简单开发模式享受强大的对象关系管理能力。
    2、${babyfish-dir}/babyfishdemo-spring/src/test/java/org/babyfishdemo/spring/dal/QueryPathTest.java。此类演示经过BabyFish扩展的JPA/Hibernate如果动态抓取数据,摆脱烦人的org.hibernate.LazyInitializationException。此功能性价比极高,即便在超级小型的项目中,此功能也能起到立竿见影的效果。

二、底层功能(为ObjectModel4Java以及ObjectModel4JPA提供服务,但也很强大且API良好,可以直接为用户所使用的底层功能)
    3、${babyfish-dir}/babyfishdemo-macollections/src/test/java/org/babyfishdemo/xcollection/uce/UnstableCollectionElementsTest.java,此类改革了集合框架,支持不稳定集合元素,当元素/键被添加到set/map中之后仍然可以被修改,所有被影响的集合会自动调整。
    4、${babyfish-dir}/babyfishdemo-macollection/src/test/java/org/babyfishdemo/macollection/bubble/SimpleBubbleEventTest.java,由于Java集合比其它语言的集合复杂,有庞大的视图体系,此类可以演示集合变更事件可以在视图链中冒泡触发的能力。
   
0 请登录后投票
   发表时间:2015-10-28  
视频格式建议转换为AVI,上传到百度网盘,或者360网盘。现在都流行网盘的,我去看了优酷确实是看不清的,优酷那里大部分都是娱乐的视频
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics