BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Speedment发布了Stream ORM 3.0.1版

| 作者 Michael Redlich 关注 11 他的粉丝 ,译者 Rays 关注 3 他的粉丝 发布于 2016年12月29日. 估计阅读时间: 10 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

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企业版也被一些大公司所使用,涉及了通信、银行、保险、能源和物流等行业。合作厂商和客户有VaadinSenchaHigher Frequency TradingExtremely 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)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT