您是否曾经想开发数据库应用程序的“快速”版本? 在此动手实验文章中,您将学习一种真正简单而直接的方法。 整个Java域模型将自动为您生成。 您只需连接到现有数据库,然后开始使用Java流进行开发。 例如,您将能够在几分钟内为您现有的数据库创建一个新的Web应用程序。
本文是有关如何成为Java流大师的系列文章中的最后一篇。
第1部分:创建流
第2部分:中级操作
第三部分:终端操作 第4部分:数据库流 第5部分:将联接的数据库表转换为流 第6部分:使用流创建数据库应用程序
到目前为止,您必须在文章和练习中体验Speedment。 为简洁起见,我们没有提供有关如何从头开始的任何描述,而是希望您了解将Java Streams与数据库一起使用的外观。 在本文中,我们将向您展示如何针对在任何数据库上运行的应用程序利用Speedment。 安装仅需几分钟,但由于Streams的表现力和所提供的类型安全性,将为您节省大量时间。
入门
为了帮助您配置项目,Speedment提供了一个项目初始化程序。 填写完项目的详细信息后,它将为您提供一个zip文件,其中包含带有所需依赖项的pom.xml
和Main.java
启动程序。
Speedment初始化程序可用于配置Speedment项目。
单击“下载”后,解压缩文件并在IDE中将其作为Maven项目打开。 在IntelliJ中,最简单的方法是选择“文件”->“打开”,然后在解压缩的项目文件夹中选择pom.xml文件。
如果您想在现有项目中使用Speedment,请通过Initializer配置项目,以确保获得所有需要的依赖项。 然后只需将提供的pom.xml与您当前的pom.xml合并,然后重新导入Maven。
您可能还记得前面的文章,Speedment依赖于自动生成的Java域模型。 因此,在编写应用程序之前,我们需要生成所需的类。 这可以通过使用Speedment Tool来完成,该工具可以通过在终端中运行mvn speedment:tool
或通过IDE的内置Maven菜单运行相同的目标来启动。
首先,将要求您注册免费许可证并连接到数据库。 免费许可证可用于所有开源数据库(无限使用)和商业数据库(最大500 MB,不需要任何账单信息)。
免费许可证可用于所有开源数据库(无限制)和商业数据库(最大500 MB,并且不需要账单信息。)
完成注册后,将要求您提供数据库的凭据(确保在初始化程序中选择了正确的DB类型)。 使用您自己的本地数据库,或者使用我们在练习中使用的Sakila数据库运行一些测试。
Sakila数据库凭证
类型: MariaDB
主持人: 35.203.190.83 端口: 3306 数据库名称: sakila 用户: sakila 密码: sakila
填写数据库凭据以连接到您的数据源。 (注意:Speedment永远不会存储您的数据库密码)。
单击“连接”按钮将启动Speedment Tool。 它在左侧显示数据库结构,在右侧显示所选表或列的设置。 在这种情况下,默认设置已足够,我们可以继续并按“ Generate”(生成)(如果您的应用程序不需要所有的表和/或列,则可以在生成前禁用它们)。
Speedment Tool可视化数据结构,并允许自定义生成的代码。
接下来,Speedment将分析数据库元数据并生成整个Java域模型。 一旦完成此过程,就可以编写应用程序了。 如果签出Main.java文件,您将找到一个包含以下内容的项目启动器:
public class Main { public static void main( final String... args) { Speedment app = new MyApplicationBuilder() .withUsername( "your-dbms-username" ) .withPassword( "your-dbms-password" ) .build(); app.stop(); } }
从这里开始,您可以使用前面文章中提供的示例来构建应用程序。 因此,我们可以通过键入以下内容来获取胶片表的管理器(胶片表内容的句柄),从而闭合圆:
FilmManager films = app.getOrThrow(FilmManager. class );
<br>
使用Manager,我们现在可以查询连接的数据库,如下所示:
List<Film> filmsTitleStartsWithA = films.stream() .filter(Film.TITLE.startsWith( "A" )) .sorted(Film.LENGTH) .collect(Collectors.toList()); filmsTitleStartsWithA: [ FilmImpl { filmId= 15 , title=ALIEN CENTER, …, rating=NC- 17 , length = 46 , FilmImpl { filmId= 2 , title=ACE GOLDFINGER, …, rating=G, length = 48 , … ]
练习题
这周没有相关的GitHub存储库供您使用。 相反,我们鼓励您将Speedment集成到新的或现有的数据库应用程序中,以尝试您新获得的技能。
额外运动
当您准备好项目时,建议您尝试一下
HyperStream ,尤其是在您拥有大型数据库并且想要提高读取性能的情况下。
HyperStream超越了Stream,并增加了JVM内存功能,将应用程序速度提高了几个数量级。 您只需要在现有的pom.xml
和Main.java
文件中添加几行代码:
.withBundle(InMemoryBundle. class ) // add to the app builder ... // Load data from database into materialized view app.getOrThrow(DataStoreComponent. class ) .load();
<br>
在用户指南中内容。 Stream API保持不变,但性能大大提高。
结论
在过去的六周中,我们展示了Java Stream API的有用性以及如何利用它来用纯Java编写类型安全的数据库应用程序。 如果您想了解有关Speedment的更多信息,请查看用户指南 ,该指南还包含有关Java Streams的更详尽的指南。
最后-感谢您对我们的文章系列感兴趣,非常高兴看到你们中的许多人一直在跟随提供的练习。 编码愉快!
s
Per Minborg
Julia·古斯塔夫森(Julia Gustafsson)
资源资源
有关Speedment Stream JOIN的更多阅读
速度手册
速度初始化器 在GitHub上加速
翻译自: https://www.javacodegeeks.com/2019/11/master-java-streams-creating-database-using-streams.html