Ebean 3 应用纯心理感受

相比越发臃肿的 hibernate,Ebean轻灵小巧如瑞士军刀;相比MyBatis的Xml地狱,Ebean清爽如刚出浴的处子……

之前用过 hibernate、jpa,一直觉得心头微酸想吐(后者尤其不爽,当前的规范薄弱到一些基本的SQL功能都不具备,不知那帮学院派的专家都在干嘛),一怒之下打算直接用DBUtils或者Spring 的JdbcTemplate 搞定得了,正盘算着我想要的功能有哪些之时,发现了 ebean——其实是在研究 play 2的时候发现了丫的选项之一是 ebean,心想这个号称很牛逼的玩意都用这东东,那么这玩意肯定有它牛逼的地方,于是开始研究,当时的版本是2.6.

这中间差点因为那如同上世纪初风格的官网而错过这玩意。

一测之下,心内暗爽,用它可以很简单地处理那将近占比60、70%的增删改查功能,剩下的复杂查询也提供了很舒服的处理方式,至于那些尤其复杂的SQL,大不了直接用 rawsql搞定。

于是把 play 2 中那个对pojo进行扩展的model基类拿过来改改用了,虽说pojo不再贫血,但问题是贫不贫血关我屁事,我爽到就行了。

之前一个项目用了这东东,结果写到后来连那些service都扔的差不多了,很多地方直接放在controller里面处理,感觉跟写 python 或者 nodejs 的代码似的。

使用过程中感觉作者绝对是属于那种第一线的开发人员,知道大家的疼点在哪,也尽可能提供简单的解决办法。相比之下,hibernate作者给人感觉就是在高山之巅俯瞰众生,jpa那些专家就是幽居深谷不问世事。不管有多牛逼,反正就是离我们巨远。

现如今新项目要启动,当然要去看看 ebean 有没有升级。感情丫已经迁移到github了,下载来一试就是一脑门汗,一堆问题?

再去丫的google group、github wiki里面一通扫,感情版本 3 以后,ebean放弃了运行时 enhance,只提供编译时的 enhance,原因很简单,一是为了代码更加简单,一是为了效率更高。

所谓 enhance,就是把pojo的class进行处理,类似于 cglib 干的事。

一开始感觉很难接受,虽然提供了ant脚本、eclipse插件,但是感觉上还是麻烦了很多不是吗。不过平心静气试用了一下之后感觉这种方式倒也不错,开发上也没什么麻烦之处。

平时开发中因为有 eclipse 插件,所以这个 enhance 过程完全自动。至于发布的时候,在 gradle 中使用 ant 的task也很容易,脚本不过增加了几行而已:


//
// 调用 Ebean Enhance 的 Ant 方法来将编译后的class 代码做增强处理
// 
ant.taskdef(name: "ebeanEnhance",
            classname: "com.avaje.ebean.enhance.ant.AntEnhanceTask",
            classpath: "tools/ebean/avaje-ebeanorm-agent-3.2.2.jar")
//
// 重载 compileJava 方法,在java编译之后做增强操作
//
compileJava.doLast {
    println '============================================'
    println '  Enhance ebean classes....' +destinationDir
    println '============================================'
    ant.ebeanEnhance(classSource: destinationDir, 
                    packages: "com.someok.*", 
                    transformArgs: "debug=5")

}

不过这期间也被搞得焦头烂额过,例如在用gradle 做 test 的时候,之前在eclipse 里面跑的很欢快的那些单元测试代码居然一条都通不过!!!

一查才发现感情是因为用 gradle 来管理多项目,那些pojo的父类我放置到了另一个module下,于是这个 ant 命令就死活找不到那些class了。最讨厌的是这些错误 gradle 调用 ant 的时候是不报的,一切都那么的静悄悄,还好 gradle test –info 能够输出更多信息。

解决办法倒也简单,把那几个父类拿过来就是了。


还需要注意的一点是,这玩意的文档有点脱节,目前提供的文档还是2.6时代的,新版增加了哪些、去掉了哪些压根没个changelog,只能遇到问题到处搜,这东西又有点小众,相对的网上资源也不多。后来没办法,直接把所有源码下下来,挨个看了遍里面的单元测试代码。瀑布汗……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值