阅读更多

28顶
3踩

开源软件

原创新闻 Nutz1.b.38发布 - Dao更快速的插入

2011-07-18 09:42 by 正式记者 zozoh 评论(30) 有14966人浏览
Nutz1.b.38发布:Dao更快速的插入



--------------------------------------------------------------------------------

1.b.38 发行注记

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


  1. 重构了 Dao -- 兑现了我们之前的承诺
  2. 重构了 EL
  3. Nutz 的源码管理迁移到了 Github

以后,希望大家报 Issue 到 Nutz Github 的问题列表 中。Google Code 的问题列表还有66个 Issue 没有处理,我们会在后续的版本中尽快修复。如果都修复了,我们就会关闭 Google Code 的问题列表,只维护 Github 的问题列表

另外,如果你在 Github 上有帐号,欢迎随时 fork Nutz,请记住我们的口号就是: 喜欢 Nutz,就 Fork 它

当然,Nutz 的下载地址仍然一直会是 Google Code 下载列表,并且 Nutz 在 Google Code 的项目主页 也会一直维护。

同时,我想提醒大家注意一下 Nutz 的官网,我们会不断的充实它的内容,比如最近做的



说到小白测试,不得不提一下 Dao 重构。我们这次重构 Dao 后总是不放心,其实我们在今年 5 月初就重构完了,然后我们测试呀,测试,毕竟是重构 Dao 了嘛,但是我们还是不放心,于是又测试呀测试... 但是我们还是不放心...

于是 Juqkai 同学在我和 Wendal 的撺掇下痛下决心,写了这个应用:

Nutz 小白测试计划

我们希望这个计划,能让更多人方便的参与测试,提交测试结果,这样我们就能为更多的人提供更稳定的 Jar 包。同时,我们也能更准确的统计贡献者名单。

当然如果没有人参与这个测试计划,最差的结果就是维持现状。令人欣慰的是,还是有4位同学(包括我)参加了1.b.38测试的小白测试

那么,让我们看看,以后的版本参加的人是会越来越多,还是越来越少 ^_^!

--------------------------------------------------------------------------------

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 之后,这个包没了。因为我们不再需要它了。你的建表可以用:

dao.create(Pet.class, true);   // true 表示如果存在,先 DROP 掉再建, false 表示如果存在就不建了


来完成。当然,删表,可以用:

dao.drop(Pet.class);


--------------------------------------------------------------------------------

除此之外,Nutz.Dao 不会有和之前不兼容的地方了。当然如果你发现了,请随时告诉我们,应该都不是大问题。

--------------------------------------------------------------------------------

EL 兼容性问题

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

重构后的 EL,eval 的结果不再是 ElValue,而是普通的 Object,这样,你使用的时候会更方便一些。

并且EL的预编译,不再是

BinObj exp = El.compile("3+4");


而是

El exp = new El("3+4");


看起来更清爽一些不是吗? Juqkai 同学的设计 ^_^

--------------------------------------------------------------------------------

问题修复



  • Issue 34 dao: support JPA Annotation by zozoh
  • Issue 85 NutDao 中需要提供批量更新操作的方法. by ming300
  • Issue 121 Nutz是否有根据实体上的注解来自动创建数据库表等对象的计划? by hzzdong
  • Issue 137 数据库操作是否可以增加对Blob类型的支持 by Toni.xutao
  • Issue 155 Dao 的 @Column注解可否标注在getter函数上 by jinghui70
  • Issue 192 NutDao性能问题:关于批量操作,使用PreparedStatement的Batch功能 by hzzdong
  • Issue 230 关于nutz dao能否动态根据tables.dod 更新表结构 by shao0707
  • Issue 267 NutzDao能否提供设置fetchSize的方法 by superxlm1985
  • Issue 294 Nutz Dao 大量数据插入效率问题 by fjayblue
  • Issue 332 sqlserver2005 nutz@google Junit测试 by haoyoushuai1986
  • Issue 416 建议nutz提供一个拼接复杂的查询条件的方法 by liuxiaogang1987
  • Issue 420 Sqls.create语句中包含'@'会出错。 by wangyingdong
  • Issue 426 Condition Cnd.where + orderBy by muyushi85
  • Issue 433 MVC的代码覆盖率实在太低,很多都没测试用例! by wendal
  • Issue 437 SqlLiteral中的@过滤 by zhuyingxi
  • Issue 457 Json:增加字段映射方式 by wendal
  • Issue 458 ActionChainMakerConfiguration类名拼写错误 by jentrees2008
  • Issue 466 使用MySQL数据库,使用Nutz.dao的自定义SQL报错 by mamacmm
  • Issue 469 Json.toJson 对char类型没有加引号 by lwk0571
  • Issue 471 Dao: 添加对Hsql数据库的支持 by wendal
  • Issue 473 使nutz兼容OSGi by windywany
  • Issue 478 1.b.38 的新 Dao 应该忽略 Column 不存在的情况 -- by Jay by zozoh
  • Issue 479 38 update 问题 by fjayblue
  • Issue 482 将Nutz打成jar, 2 个 Scans 的测试过不了 by zozoh
  • Issue 485 EL表达式引擎在某些情况下会出现错误 by ywjno.dev
  • Issue 487 ioc中某个属性的值是Map时,如果是null偶尔报:String can not cast to java.util.Map by superhanliu
  • Issue 489 AnnotationIocLoader类对set方法处理@Inject 有bug by feiyan
  • Issue 490 38的Dao,在DB2下,使用@Column('abc')的话,insert会报错 by wendal
  • Issue 493 Lang的str2number方法在某些情况下会出错 by ywjno.dev
  • Issue 494 自定义SQL wiki by superhanliu
  • Issue 497 Nztz.Dao 注释没写全,和注释重写 by hongchongyuan
  • Issue 500 nutz.Json 应扩展一下@JsonField注解 by conanca


--------------------------------------------------------------------------------

质量

共通过了 697  个单元测试用例,代码覆盖率达到



Nutz.Dao 经测试在如下数据库上可以工作正常



--------------------------------------------------------------------------------

文档

修改了很多文档 ...

--------------------------------------------------------------------------------

主要贡献者名单

贡献的种类:

  • 问题: 给项目的问题列表汇报一个上的问题,并且该问题被本次发布包括
  • 博客: 在本版本开发期间,写过关于 Nutz 的文章,并被 推荐列表收录
  • 代码: 提交过至少一个修订
  • Demo: 为 NutzDemo 提交过代码
  • 文档: 提交过文档,在讨论区发帖或者通过文档上的留言指出现有文档存在的问题
  • 测试: 发布前,参与测试周发布人给出的任务


如有遗漏,请提醒我们 ^_^

贡献列表,我已经写了一个小程序,根据 Issue 列表来自动统计...

贡献者           问题 博客 支持 代码 示例 文档 测试
Toni.xutao       O     -     -     -     -     -     -  
caji.net        O     -     -     -     -     -     -  
conanca          O     -     -     -     -     -     -  
feiyan           O     -     -     -     -     -     -  
fjayblue         O     -     -     -     -     -     -  
haoyoushuai1986   O     -     -     -     -     -     -  
hongchongyuan    O     -     -     -     -     -     -  
hzzdong          O     -     -     -     -     -     -  
jentrees2008     O     -     -     -     -     -     -  
jinghui70        O     -     -     -     -     -     -  
juqkai          O     -     O     O     -     O     O  
liuxiaogang1987   O     -     -     -     -     -     -  
lwk0571          O     -     -     -     -     -     -  
mamacmm          O     O     -     -     -     -     O  
ming300          O     -     -     -     -     -     -  
muyushi85        O     -     -     -     -     -     -  
shao0707         O     -     -     -     -     -     -  
shine          -     -     -     -     O     -     -  
superhanliu      O     -     -     -     -     -     -  
superxlm1985     O     -     -     -     -     -     -  
wangyingdong     O     -     -     -     -     -     -  
wendal           O     O     O     O     O     O     O  
windywany        O     -     -     -     -     -     -  
ywjno.dev        O     -     -     -     -     -     -  
zhuyingxi        O     -     -     -     -     -     -  
zozoh            O     -     O     O     O     O     O  
Jay 蓝色幽默      O     -     -     O     -     -     O  


另外,很多朋友都在:



回答新手的问题,我们现在只能根据印象草草统计,贡献列表非常不完善。我们正在想办法,争取在不远的将来,能记录下来大家每一点一滴的付出 ^_^!

欢迎访问官网,以获取 最新的快照版用户手册
28
3
评论 共 30 条 请登录后发表评论
30 楼 vb2005xu 2011-07-20 16:29
一直在使用 一直在观望
29 楼 zozoh 2011-07-20 16:17
wendal 写道
boygirl 写道
加油!最好有详细文档,这样会有更多人参与进去!

已经有详细的文档

会不断的详细
28 楼 wendal 2011-07-20 15:19
feiyan35488 写道
经历了b.36版的的bug横行,对b.38持怀疑态度,晚上回去放到应用里测试一下

我们期待在发布前就有大量使用者参与测试,这也是我们开发"测试计划"的原因
27 楼 wendal 2011-07-20 15:16
boygirl 写道
加油!最好有详细文档,这样会有更多人参与进去!

已经有详细的文档
26 楼 shiren1118 2011-07-20 10:36
我的开源项目已经启用nutz了
25 楼 yin_bp 2011-07-19 16:52
支持国产货
24 楼 boygirl 2011-07-19 16:35
加油!最好有详细文档,这样会有更多人参与进去!
23 楼 boygirl 2011-07-19 15:39
22 楼 lucky16 2011-07-19 13:24
必须支持,有时间会下载源码下来研究一下的
21 楼 bcw104 2011-07-19 12:30
虽然没时间研究,但一定要支持一下,支持国产
20 楼 zozoh 2011-07-19 11:42
conanca 写道
dao.create(Pet.class, true);
38的正式版可以建中间表(@manymany所配置的)了??
如何屏蔽这个功能


你自己首先在数据库中创建这个表,就好 
19 楼 lovejing 2011-07-19 10:45
好东西: ) 顶
18 楼 samfisher 2011-07-19 10:03
nice job
17 楼 conanca 2011-07-19 09:26
dao.create(Pet.class, true);
38的正式版可以建中间表(@manymany所配置的)了??
如何屏蔽这个功能
16 楼 hszdz 2011-07-19 02:28
绝对好东西
15 楼 czpae86 2011-07-18 23:16
  支持
14 楼 我爱北京天安门 2011-07-18 21:40
13 楼 yidao620c 2011-07-18 21:34
matychen 写道
lschin 写道
标题引人遐想...


你邪恶了。。。
12 楼 matychen 2011-07-18 19:51
lschin 写道
标题引人遐想...

11 楼 zozoh 2011-07-18 19:44
特此声明:

superhanliu 22:58:50
这个不是我提出来的,是个叫super超的人提的,在1.b.38发型标记中写的是superhanliu,错了。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 简单使用Nutz

    简单使用Nutz 环境准备 Maven依赖 <!--Springboot整合Nutz--> <dependency> <groupId>org.nutz</groupId> <artifactId>nutz-plugins-spring-boot-starter</artifactId> <...

  • 在Nutz[1.b.38]中使用视图对关联数据表的操作

    在上一篇《使用Nutz[1.b.38]对关联数据表的一对一/一对多操作 》中提到对象关联的排序问题,如下: -------------------------------------------------------------------------------------- 发现了dao中有一个...

  • SpringBoot-NutzDao

    注意使用的是 1.r.66 环境搭建 Maven <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <!-- UTF8大法好 -...

  • nutz dao 操作

    src/org/nutz/dao/impl/sql/SqlTemplate.java查看文件 @ b4c8c64   1 +package org.nutz.dao.impl.sql;   2 +   3 +import java.lang.reflect.Array;   4 +import ...

  • 七、Springboot 整合Nutz

    本章节基于: 六、Springboot 整合Shiro---03权限控制 Nutz 可以做什么? Dao -- 针对 JDBC 的薄封装,事务模板,无缓存 Ioc -- JSON 风格的配置文件,声明时切片... Lang -- 更简洁的 Java 函数以及更丰富...

  • spring+nutz异常场景

    spring+nutz异常场景1. MYSQ1.1. 测试环境1.2. 主键冲突或唯一性索引异常1.3. Query查询超时Update锁超时1.4. 网络断开1.5. 网络阻塞1.6. 网络丢包1.7. 网络延时1.8. 数据库CPU飙高1.9. 数据库挂机1.10. 隔离级别读...

  • Nutz自定义SQL

    Nutz自定义SQL 创建SQL对象 用户可以硬编码 SQL 语句,比如 Sql sql = Sqls.create("DELETE FROM t_abc WHERE name='Peter'"); 支持占位符的书写方式,比如 Sql sql = Sqls.create("DELETE FROM $table WHERE name=...

  • 分布式任务调度平台XXL-JOB

    - 38、刚泰集团 - 39、深圳泰久信息系统股份有限公司 - 40、随行付支付有限公司 - 41、广州瀚农网络科技有限公司 - 42、享点科技有限公司 - 43、杭州比智科技有限公司 - 44、圳临界线网络科技有限公司 - 45、广州...

  • Maven 项目依赖问题解决--ZipException: invalid LOC header (bad signature)

    报错日志六月 09, 2018 6:38:46 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst....

  • 深度学习关于分布式任务调度平台XXL-JOB框架详解

    二、快速入门 2.1 初始化“调度数据库” 2.2 编译源码 2.3 配置部署“调度中心” 步骤一:调度中心配置: 步骤二:部署项目: 步骤三:调度中心集群(可选): 2.4 配置部署“执行器项目” 步骤一:...

  • JAVA这门语言 如何从刚毕业的小菜鸟进阶成月薪15K以上的工程师

    3 最后还有1点经验和大家分享,对sun的api一定要学会活用,不论是学习还是作为参考api都有很大的帮助,在完全了解java的结构的基础上,不论什么方法都是可以通过api来找到的.所以不要怕找不到方法,了解结构,了解...

  • 转载《分布式任务调度平台XXL-JOB》

    《分布式任务调度平台XXL-JOB》 ... 一、简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家...1、简单:支持通过Web页面对...

  • 高级色系PPT11.pptx

    高级色系PPT11.pptx

  • node-v7.9.0-linux-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 基于tensorflow的的cnn卷积神经网络的图像识别分类

    【作品名称】:基于tensorflow的的cnn卷积神经网络的图像识别分类 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

  • ### 数据分析概念、使用技巧、优缺点的文章

    数据分析是指通过收集、清洗、处理和解释数据,以发现其中的模式、趋势和关联,从而提供决策支持或洞察见解的过程。它在各行各业中都扮演着至关重要的角色,从市场营销到科学研究,从金融领域到医疗保健,都有广泛的应用。

  • 对微信帐单进行数据分析

    #pip install pandas -i https://mirrors.aliyun.com/pypi/simple #安装pandas处理数据模块 #pip install xlwt -i https://mirrors.aliyun.com/pypi/simple #安装excel模块 #pip install openpyxl #从微信导出对帐帐单 import pandas as pd #引入pandas,重命名为pd,Python3.9.10版本的Pandas无法兼容低版本的xls import numpy as np #导入均值模块 #从第17行读取csv格式的帐单 df = pd.read_csv('微信支付账单(20230101-20230401).csv',header=16) #分析数据 ...... #将分析数据另存为out.xlsx ..... #进行交易进间分析 ...... #统计交易对方 ...... #将结果保存到excel ..... writer.close()

  • node-v7.2.0-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 作业.docx

    作业.docx

  • DB23∕T 2540-2019 智慧城市建设项目可行性研究报告.pdf

    DB23∕T 2540-2019 智慧城市建设项目可行性研究报告.pdf

Global site tag (gtag.js) - Google Analytics