2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

直播短视频源码——直播与短视频之间的区别如何解决

开源直播系统源码

软件开发 短视频源码 直播系统源码 直播源码 一对一视频聊天系统

权威发布! 开发人员需要关注的11种顶级恶意软件

SEAL安全

网络安全 软件安全 恶意软件 软件供应链安全

易观分析:2022年Q2中国跨境进口零售电商市场规模为1171.0亿元

易观分析

报告 跨境进口 零售电商市场

学大数据需要具备什么基础知识点?

小谷哥

零基础web前端学习靠谱吗

小谷哥

Kubernetes监控 Harbor

CTO技术共享

开源 签约计划第三季 8月月更

头脑风暴:一和零

HelloWorld杰少

算法 LeetCode 数据结构, 8月月更

兆骑科创创投平台,创赛承办,投融资对接,项目落地孵化

兆骑科创凤阁

Redis 介绍

武师叔

8月月更

java课程学习难度怎么样

小谷哥

HADOOP学习笔记之HDFS

薛定谔的猫

hadoop hdfs

聊聊阻容降压原理 和 实际使用的电路

矜辰所致

电路设计 8月月更

案例复现,带你分析Priority Blocking Queue比较器异常导致的NPE问题

华为云开发者联盟

后端 开发

什么密码,永远无法被黑客攻破?

Authing

免费云管平台有吗?咨询电话多少?

行云管家

云计算 企业上云 云管平台

Kubernetes Ingress 控制器讲解

CTO技术共享

开源 签约计划第三季 8月月更

大模型落地实践:同花顺大模型技术应用及优化

澜舟孟子开源社区

人工智能 自然语言处理 预训练模型

基于SpringBoot的OnlineMusicPlayer项目

bug郭

签约计划第三季 8月月更

技术分享| 视频传输Simulcast与Svc

anyRTC开发者

音视频 Simulcast Svc 视频传输

leetcode 23. Merge k Sorted Lists 合并K个升序链表(困难)

okokabcd

LeetCode 数据结构与算法 栈和队列

Kubernetes Crossplane VCluster构建新集群

CTO技术共享

开源 签约计划第三季 8月月更

程序员培训班哪家教的比较好

小谷哥

数读海南数字经济 | 2022海南数字经济发展指数发布

易观分析

数字经济 经济 海南

兆骑科创海内外高层次人才大赛平台,双创赛事活动举办

兆骑科创凤阁

地址标准化服务AI深度学习模型推理优化实践

阿里云大数据AI技术

深度学习

大数据开发课程靠谱吗?

小谷哥

焱融科技入选“2022 中关村国际前沿科技创新大赛”大数据与云计算领域 TOP10

焱融科技

文件存储 分布式文件存储 获奖

StarRocks 在 58 集团全业务线的深度实践

StarRocks

数据库

开源一夏 | Java"实现"svn文件对比

六月的雨在InfoQ

svn 开源 文件对比 8月月更

Spring-boot项目练习笔记(二)MybatisPlus实现公共字段自动填充

赵四司机

Java web MyBatisPlus 8月月更

产品说明丨 iOS端使用 MobPush 快速集成方法

MobTech袤博科技

ios sdk MobTech袤博科技 mobpush

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