技术开发 频道

Java应用框架 Nutz 1.b.38发布!

  【IT168 资讯】

  Nutz 1.b.38 发行注记

  自Nutz 1.b.37 发布以来,时隔近3个月。为什么间隔这么时间涅? 因为我们做了很多重大的调整:

  · 重构了 Dao -- 兑现了我们之前的承诺。

  · 重构了 EL。

  · Nutz 的源码管理迁移到了 Github 上。

  Dao 兼容性问题

  · 1.b.38 的 Dao 与之前的 Dao 使用上的主要区别。

  · 更快的批量操作 -- 比如大数据量的插入。

  · 提供了 Criteria 接口,扩展了 Condition 接口,这样查询的时候,可以用 PreparedStatement 参数。

  · 同时 Criteria 接口也非常方便你组织更复杂的 SQL 条件。

  · 自定义 SQL 可以设置 fetchSize,但是依然不能支持 pager,你还得自己用 SQL 方言来翻页。

  · 重新设计的 Entity ,可以方便的扩展,这样有些偏爱 JPA 或者配置文件的同学,可以扩展自己的实体配置方式。

  · 重新设计的 LOG,可以让 SQL 打印的更清晰。

  · 可以dao.insert 或者dao.update 一个Map。

  · 支持 dao.create/dao.drop 方式来建表和删表。

  · org.nutz.dao.Dao 原有的接口函数统统保持不变,从而保证了兼容性不会有太大问题。

  为了上述的优点,我们放弃了一点点兼容性,你的项目如果用 Nutz.1.b.38 可能需要少量修改几行代码。

  Cnd 类的兼容问题

  当然,如果你直接实现 Condition 接口也不会有问题。

  · Cnd.exp 的返回值类型变成了 SqlExpression。

  · Cnd.exps 的返回值类型变成了 SqlExpressionGroup。

  Entity 接口的兼容问题

  极个别很有 Hacking 精神的同学使用 Nutz 的时候,使用了 Entity 类,但是不幸的是现在 Entity 已经变成一个接口并且某些方法已经变了名字,但是原来 Entity 类所有的功能,现在 Entity 接口都能提供。如果你发现某些方法找不到了,耐心看看新的 Entity 接口的定义,我想你很快就能找到你要找的方法。

  最重要的一个改变,就是原来的 entity.fields() 方法,变成了 entity.getMappingFields()。这个是有同学向我抱怨过,因此觉得有必要在这里特别提一下。

  org.nutz.dao.tool 包的兼容问题

  某些很有探索精神的同学可能偶然发现了 Nutz 还隐藏了一个 Dao 工具类的包,里面的方法可以跨数据库的建表,所以很有可能在自己的项目里也这么应用了。但是不幸的是,1.b.38 之后,这个包没了。因为我们不再需要它了。

  EL 兼容性问题

  EL 作为比较新的一个功能,可能用的人比较少,我们之后会再各个模块里逐渐发掘 EL 的潜力。本次发布 EL 经过了重构,效率提升了将近1倍。当然,作为一个用反射实现的东东,它的还是很慢,但是我们设计 EL 的时候假定它的使用场景是配置文件,后台进程等一些不是非常需要效率的地方。它可以让你的程序更有弹性。如果非常需要效率的地方,恐怕它不是一个很好的选择。

0
相关文章