AICon上海「Agent与多模态解决方案专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Speedment 发布了 Stream ORM 3.0.1 版

  • 2016-12-28
  • 本文字数:2785 字

    阅读完需:约 9 分钟

Speedment 发布了 3.0.1 版的 Java 工具包和运行时应用。Speedment 是基于 Java Stream 的对象关系映射(ORM)产品,名称源自“速度”(Speed)和“开发”(Developement)两个词的混合。Speedment 意在提高数据库程序的开发速度,最早面市于 2015 年 6 月,其技术措施包括降低 ORM 复杂度、抽象化数据库连接配置以及执行数据上的操作。

此次发布版本的新特性包括:

  • 符合 JPA 规范的的对象持久化;
  • 声明式的 Java 8 Stream API,用于数据库操作;
  • 更好的代码生成:
    • 支持原始类型;
    • 改进的日志功能;
  • 改进的用户接口:
    • 版本检查;
    • 高亮潜在问题;
    • 更好的输出控制台;
    • 数据库合并“重加载”的改进;
    • 对每个表具有可设置的包名;
    • 原生域映射;
    • 新的 Maven 编译目标:“clear”和“reload” 。

Speedment 开源版支持下列数据库:

Speedment 企业版支持 Oracle 等商业数据库。

入门指南

下面的命令启动了一个 Speedment 的应用编译,其中使用了 Maven 和已有的 MySQL 数据库。

复制代码
mvn archetype:generate -DgroupId=org.redlich.publications
-DartifactId=publications -DarchetypeArtifactId=speedment-archetype-mysql
-DarchetypeGroupId=com.speedment.archetypes -DinteractiveMode=false
-DarchetypeVersion=3.0.1 && cd publications && mvn speedment:tool

该命令将创建一个由 -DartifactID 选项所指定的子目录,改变工作路径至该目录,并启动如下图所示的 Speedment 工具:

在输入数据库名后,点击“Connect”按钮就会连接到 MySQL 数据集,并导入如下图所示的模式:

用户填写了项目信息后,点击“Generate”按钮,该工具就会生成操作数据库表的 Java 源代码,并生成可编辑的通用 Main.java 文件,在其中编写操作数据库的声明式 Java Stream 代码。

对于 PostgreSQL 和 MariaDB 数据库,下面的命令行参数需要替换为适当的内容:

-DarchetypeArtifactId=speedment-archetype-postgresql

-DarchetypeArtifactId=speedment-archetype-mariadb

这样在添加任何数据库操作代码之前,该项目就已可编译和运行:

mvn compile && mvn exec:java -Dexec.mainClass="{package}.Main"Speedment 的 API入门指南页面中给出了实现初始化、持久化、更新和连接等数据库操作的Java 8 Stream 代码例子。在Github代码库中还提供了一个完整项目的例子。

Speedment 的 CTO Per-Åke Minborg 向 InfoQ 介绍了该产品的最新发布版本。

InfoQ:您在 Speedment 担任什么职位?

Minborg:我是 Speedment 的合伙创始人并任 CTO。作为 CTO,我领导了技术开发及 Speedment 对 Java 社区的贡献。

InfoQ:和 Hibernate、jOOQ 和 Apache Torque 等其它的 Java ORM 架构相比,Speedment 具有哪些独到之处?

Minborg: Speedment 解决了已有关系数据库与当前基于 Java 8 Stream 应用间的无缝关联问题。Java 开发人员用声明式 Stream 操作方式表述他们所有的数据操作需求,由 Speedment 框架决定所创建的数据流水线中,哪些部分最好应由数据库引擎处理,哪些部分应交给 JVM 处理。这样 Java 应用代码就可以处理复杂的数据操作,无需使用任何数据查询语言。由于数据库接口代码是系统生成的,所以任何数据库数据模型的更改将会自动提交给 Java 应用,这使得当数据库模型随时间的不断变化时,开发人员可以使用编译器发现数据库和应用间所产生的所有不匹配。在 https://dzone.com/articles/declarative-programming-with-speedment-30 中给出了更详细的信息。应用数据处理的 Java 部分可用声明式方式实现,这种方式在 Speedment 之前没有任何产品提供。

与此形成对比的是,使用Hibernate的 Java 开发人员需要用特定的语言和数据库通信,数据库查询将表述为十分类似于 SQL 的 HQL 语言。这意味着如果数据库模型随时间发生了变化,在运行时将会发现所有应用代码上的不匹配。因此使用两种语言易于出错,并产生了高维护代价。此外,由 Stream 所提供的 Java 8 函数式编程模式在本质上是声明式的,Java 和 HQL 间的语言障碍破坏了引入声明式编程的目的。在 https://dzone.com/articles/streams-in-hibernate-and-beyond 中给出了更多概念上的主要差异。

Hibernate 假定 Java 开发人员需要直接面对查询语言。jOOQ同样基于此假定构建,它使得由 Java 构建实际 SQL 代码的过程更加清晰。虽然在很多方面上 jOOQ 比 Hibernate 更加简洁,但它与 Hibernate 一样是显式聚焦于查询语言上的,而这在 Speedment 中用抽象的方式实现。

Apache Torque假定数据使用 XML 建模,而非 Java 或 SQL。这非常适合从头开始构建的项目,在项目中很少甚至不需要与需实际生成 SQL 的数据模型保持一致。正因为数据模型的表示是独立于数据库引擎之外的,Apache Torque 不允许任何对已有关系数据库的完全迁移路径,也不允许用户使用任何数据库特有的特性。

Speedment 架构在使用其它的数据源时,例如驻留 JVM 内存的数据库,可不必更改 Java 应用代码,而是通过配置实现,这是将查询语言从 Java 代码中抽象分离出来所提供的另一个特性。Speedment 的数据操作流水线让 Java 应用去描述对数据所要做的操作,这样 Speedment 框架可以自由地决定操作的实现方式,这就是 Speedment Insane Mode 的工作方式。这种自由彻底地改变了数据的检索方式,而不会影响到 Java 应用逻辑。而上面所提到的所有框架都不具备这类能力,因为这些应用构建的框架是基于查询语言的,这将不可避免地绑定到特定的数据检索模型。

InfoQ:对于开发人员和组织在什么情况下应考虑选用 Speedment 企业版,您有哪些建议?

Minborg: Speedment 开源版用于开源数据库。对于使用 Oracle 等商业数据库的用户,需要具有数据库连接器的企业版基本许可。该许可中包括了服务和支持。

此外,具有企业版高级许可的客户可使用 Speedment Insame Mode 功能,该功能可成倍地加速应用响应。

许可中还包括驻留 JVM 数据(In-JVM Data)技术,该技术可缓解性能瓶颈问题。

InfoQ:能为我们介绍一下 Speedment 的合作厂商和用户情况吗?

Minborg:我们已有数千遍布全球的开源产品用户。Speedment 企业版也被一些大公司所使用,涉及了通信、银行、保险、能源和物流等行业。合作厂商和客户有 Vaadin Sencha Higher Frequency Trading Extremely Heavy Industries 等。

InfoQ:下一步 Speedment 将如何发展?

Minborg:我们正探索在产品试用版中添加更多的特性,使开发人员可在测试环境中免费使用软件。其中将会考虑把 In-JVM-Memory Insane Mode 作为开发人员许可的一部分。

我们将添加与 Spring Boot 和 Vaadin 框架的集成。我们也正在持续添加面向更多数据源的连接器。当然我们还将支持 Java 9。

查看英文原文: Speedment Releases Stream ORM Version 3.0.1


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-12-28 18:002142
用户头像

发布了 227 篇内容, 共 79.7 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

编程爱好者的福音:实用技巧与教程

天津汇柏科技有限公司

代码 #编程

KWDB 亮相 COSCon′24 第九届中国开源年会

KaiwuDB

数据库 开源 kaiwudb开源

Screaming Frog SEO Spider:网站爬虫及SEO审计工具

Rose

一键蓝牙设备连接切换 ToothFairy for Mac v2.8.4中文版 兼容M/intel

Rose

测试人生 | 90后斩获多家名企offer的小哥哥,做对了什么?

测吧(北京)科技有限公司

测试

焕然一新!TinyVue 组件库 UI 大升级,更符合现代的审美!

OpenTiny社区

Vue 前端 组件库 OpenTiny TinyVue

行云堡垒V7.5新特性

行云管家

网络安全 堡垒机

EndNote 21授权密钥2024最新 附EndNote 21详细图文安装教程

Rose

DaVinci Resolve v19.0.3激活版 达芬奇mac版安装教程

Rose

Smooze Pro for Mac v2.1.11激活版 鼠标增强工具专业版

Rose

开源分析和落地方案—Sentinel篇

京东科技开发者

深入了解堡垒机的四个作用-行云软件

行云管家

网络安全 数据安全 堡垒机 企业安全

亚马逊商品API接口:运用及收益的深度探讨

科普小能手

API 接口 API 测试 亚马逊API 亚马逊商品详情API 亚马逊API接口

CST软件如何添加和管理自定义的材料

思茂信息

教程 仿真软件 CST软件

实时创作和视觉编程软件 TouchDesigner Pro

Rose

Axure RP 8 破解版下载-附axure rp 8 注册码,可永久汉化激活

Rose

Spring事务实现原理

京东科技开发者

探索设计稿自动生成Flutter代码的技术方案

京东科技开发者

测试人生 | 90后斩获多家名企offer的小哥哥,做对了什么?

测试人

软件测试

Axure RP 10 及Axure RP 10破解教程 附安装包 Mac/win

Rose

【论文速读】| RePD:通过基于检索的提示分解过程防御越狱攻击

云起无垠

数据驱动增长四阶段:从TLG到ALG的全面解析|StartDT Talk

奇点云

Speedment发布了Stream ORM 3.0.1版_Java_Michael Redlich_InfoQ精选文章