10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

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:002272
用户头像

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

关注

评论

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

Altair HyperWorks教程:线性屈曲分析

智造软件

仿真 CAE软件 hyperworks 汽车行业 航空

分享背后的设计理念:为什么我们要重新设计工业数据管理平台

TDengine

tdengine 工业数据 idmp

“文件自由”的鸿蒙实践:两个独立开发者与《流舟文件》的破局之旅

最新动态

干货分享!矿产行业指标体系建设与 AI 数智应用全方案解析

袋鼠云数栈

人工智能 指标体系 指标 指标建设 矿产行业

为什么“低代码”要成为新系统的基础能力?

星云低代码中间件

ide 低代码 开发平台 可视化开发

英特尔可变显存技术让32GB内存笔记本流畅运行Qwen 30B大模型

科技热闻

本地MacOS环境连接管理开发者空间 - 云开发环境

华为云开发者联盟

Mac 软件 Linux、 华为开发者空间

仓颉基础大揭秘:数据类型的奇妙世界

华为云开发者联盟

CodeArts 仓颉 华为开发者空间

《小K闪电课堂》EP08 :SQL 引擎“第五关”——时序执行器!

KaiwuDB

数据库 KaiwuDB 分布式多模数据库 KWDB开源数据库 数据库教程

中小企业安全焦虑终结者:腾讯iOA基础版五大场景防护实测

穿过生命散发芬芳

腾讯iOA场景体验官

生成式AI时代的应用NLP实战策略

qife122

自然语言处理 机器学习

基于开发者空间OpenGauss数据库列存引擎的分析与使用

华为云开发者联盟

opengauss AI+ dify 华为开发者空间

开发者空间仓颉初体验:开启仓颉语言的神秘大门

华为云开发者联盟

语言开发 仓颉 华为开发者空间

Skywork Deep Research Agent重磅升级!带来更多模态、更高质量和更高效的体验

新消费日报

linux-screen命令使用

天翼云开发者社区

CDN 操作系统 screen

(在线CAD控件)网页CAD与Mapbox结合实现在线地图和CAD编辑

WEB CAD SDK

等保 2.0:开启网络安全防护新篇章

等保测评

Grafana无法启动修复解决

天翼云开发者社区

Grafana

成图大赛 | Altair 助力第十八届“高教杯”全国大学生先进成图技术与产品信息建模创新大赛圆满落幕

Altair RapidMiner

机器学习 仿真 CAE Inspire 结构轻量化

安全认证系列| ArgoDB通过强制性国家标准GB 18030-2022最高级别认证,无缝兼容中文环境

星环科技

安全认证系列|等保三级达标:ArgoDB筑牢企业安全防线,合规无忧

星环科技

解码社交媒体监控的战略意义

沃观Wovision

海外舆情监控 沃观Wovision 海外舆情监测

万力轮胎36亿柬埔寨橡胶轮胎项目的RFID技术真相

斯科信息

斯科信息 RFID技术 RFID标签

抢占达人营销新高地:如何选对海外社交平台加速品牌出海

Wolink

跨境贸易 海外营销推广 沃链Wolink 达人营销

评估机器翻译模型性别偏见的数据集发布

qife122

机器翻译 数据集

浪浪山小妖怪逆袭记:低代码打造基层数字化转型超能力

中烟创新

SSRF跨协议重定向绕过漏洞分析

qife122

nodejs SSRF

2026中国电子展

AIOTE智博会

电子展 深圳电子展 电子信息展 电博会

OpenLayers与Vue.js结合实现前端地图应用

知识浅谈

地图 openlayers

一文读懂:什么是私有化即时通讯?企业为什么要选择私有化

BeeWorks

即时通讯 IM 私有化部署

火山引擎数智平台发布Data Agent"一客一策"与AI数据湖"算子广场"

字节跳动数据平台

大数据 智能体 agent

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