成为Java流大师–第6部分:使用流创建新的数据库应用程序

您是否曾经想开发数据库应用程序的“快速”版本? 在此动手实验文章中,您将学习一种真正简单而直接的方法。 整个Java域模型将自动为您生成。 您只需连接到现有数据库,然后开始使用Java流进行开发。 例如,您将能够在几分钟内为您现有的数据库创建一个新的Web应用程序。

本文是有关如何成为Java流大师的系列文章中的最后一篇。

第1部分:创建流
第2部分:中级操作
第三部分:终端操作 第4部分:数据库流 第5部分:将联接的数据库表转换为流 第6部分:使用流创建数据库应用程序

到目前为止,您必须在文章和练习中体验Speedment。 为简洁起见,我们没有提供有关如何从头开始的任何描述,而是希望您了解将Java Streams与数据库一起使用的外观。 在本文中,我们将向您展示如何针对在任何数据库上运行的应用程序利用Speedment。 安装仅需几分钟,但由于Streams的表现力和所提供的类型安全性,将为您节省大量时间。

入门

为了帮助您配置项目,Speedment提供了一个项目初始化程序。 填写完项目的详细信息后,它将为您提供一个zip文件,其中包含带有所需依赖项的pom.xmlMain.java启动程序。

1-数据库应用

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

2-数据库应用

填写数据库凭据以连接到您的数据源。 (注意:Speedment永远不会存储您的数据库密码)。

单击“连接”按钮将启动Speedment Tool。 它在左侧显示数据库结构,在右侧显示所选表或列的设置。 在这种情况下,默认设置已足够,我们可以继续并按“ Generate”(生成)(如果您的应用程序不需要所有的表和/或列,则可以在生成前禁用它们)。

3-数据库应用

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.xmlMain.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速排序 挖坑_由浅入深玩转快速排序算法

由浅入深玩转快速排序算法快速排序可以说是最快的通用排序算法&#xff0c;它甚至被誉为20世纪科学和工程领域的十大算法之一。在众多排序算法中其无论是时间复杂度还是空间复杂度都颇具优势。作为开发工程师&#xff0c;我们很有必要了解它的思想。接下来将由在下为大家一步步…

代码拾取图片某一点的颜色_RPG游戏开发日志7:道具拾取与存放

本项目同步上传于github和coding上&#xff0c;国内读者可以通过在coding下载项目。也欢迎你加入我的UE4学习交流QQ群&#xff1a;872537977。如果你喜欢我写的文章&#xff0c;也希望你点赞、收藏、转发。谢谢&#xff01;如果你喜欢我写的文章&#xff0c;也希望你点赞、收藏…

abp vue如何配置服务地址_DHCP服务如何配置才能尽量减少被攻击的可能

DHCP Snooping是啥&#xff1f;DHCP Snooping是DHCP的一种安全特性&#xff0c;用来保证DHCP客户端能够正确的从DHCP服务器获取IP地址&#xff0c;防止网络中针对DHCP的攻击。DHCP Snooping是如何防止DHCP攻击的呢&#xff1f;DHCP&#xff0c;动态主机配置协议&#xff0c;在I…

通达信缠论买卖点公式_通达信缠论多空主图指标公式

1.高位无量就拿&#xff0c;就算拿错了也要拿着。高位就是说股价处于或者接近历史的最高位。高位无量横盘&#xff0c;是非常典型的上涨中继形态之一&#xff0c;高位的窄幅箱型振荡。2.高位放量出现就要跑,哪怕是跑错也要跑。股价在已经过了一段时间比较大的涨幅后&#xff0c…

多节锂电串联保护板ic_如何有效保护锂电池板,一款优质的MOS管就能解决

锂电池几乎应用于我们日常接触到的各类电器之中&#xff0c;但如何保护锂电池&#xff0c;你又是否知道呢&#xff1f;其实在锂电池保护板&#xff0c;最主要的元器件是IC与MOS。MOS对锂电池板的保护作用非常大&#xff0c;它可以检测过充电&#xff0c;检测过放电&#xff0c;…

使用pp架构形成计算机集群请求的地址无效_干货!史上最详细脑图《大型网站技术架构》...

1. 介绍一下《大型网站技术架构》这本书可能很多人都看过&#xff0c;小编个人觉得真的是非常不错的一本书。看完这本书后&#xff0c;你会对如何设计大型网站架构&#xff0c;有非常清晰的思路。如果还没有读过的小伙伴&#xff0c;赶紧去读一读吧。PS&#xff1a;小编这里有这…

泰坦尼克号数据_数据分析-泰坦尼克号乘客生存率预测

项目背景目标预测一个乘客是否能够在泰坦尼克号事件中幸存。概述1912年4月15日&#xff0c;泰坦尼克号在首次航行期间撞上冰山后沉没&#xff0c;船上共有2224名人员&#xff08;包括乘客和机组人员&#xff09;&#xff0c;共有1502人不幸遇难。造成海难失事的原因之一是乘客和…

linux mysql服务器安装_Linux服务器MySQL安装

Linux服务器MySQL安装1. MySQL官网下载如图&#xff1a;2. 安装MySQL[rootiZ2zebb0428roermd00462Z /]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch#过滤MySQL&#xff1a;[rootiZ2zebb0428roermd00462Z /]#yum repolist all |grep mysql#ena…

python3 array为什么不能放不同类型的数据_来自俄罗斯的凶猛彪悍的分析数据库ClickHouse...

点击上方蓝色字体&#xff0c;选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注&#xff0c;大数据开发领域最强公众号&#xff01;暴走大数据点击右侧关注&#xff0c;暴走大数据&#xff01;ClickHouse相关文章推荐&#xff1a;战斗民族开源 | ClickHo…

mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享

[背景简介]MySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下&#xff0c;MySQL是管理内容最好的选择。mysql虽然功能未必很强大&#xff0c;但因为它的开源、广泛传播&#xf…

mysql直接执行文件格式_Windows 环境下执行 .sql 格式文件方式

windows 命令行中有2种执行 .sql 文件的方式&#xff1a;直接行文件 和 先进入mysql命令行然后执行文件。具体操作如下:1. 直接在windows命令行执行。打开windows命令行(winR打开运行窗口然后输入cmd&#xff0c;回车)&#xff0c;进入mysql的本机地址&#xff0c;如果配置了环…

Java大数据处理的流行框架

大数据挑战 在公司需要处理不断增长的数据量的各个领域中&#xff0c;对大数据的概念有不同的理解。 在大多数这些情况下&#xff0c;需要以某种方式设计所考虑的系统&#xff0c;以便能够处理该数据&#xff0c;而不会随着数据大小的增加而牺牲吞吐量。 从本质上讲&#xff0c…

带有Prometheus的Spring Boot和测微表第6部分:保护指标

以前&#xff0c;我们使用Prometheus成功启动了Spring Boot应用程序。 Spring应用程序中的一个端点正在公开我们的指标数据&#xff0c;以便Prometheus能够检索它们。 想到的主要问题是如何保护此信息。 Spring已经为我们提供了强大的安全框架 因此&#xff0c;将其轻松用于…

使用AWS Elastic Beanstalk轻松进行Spring Boot部署

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户&#xff1f; 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 几乎所有应用程序都依赖于身份验证。 开发人员以及雇用他们的公司都想确认谁在发出请求&…

mysql报错乱码_连接mysql服务器报错时,出现乱码

页头用了header(content-type:text/html;charsetutf-8);try{$this->dbonew PDO($dsn,$dbuser,$dbpassword);}catch(Exception $e){echo $e->getMessage();}连接失败时会报错&#xff0c;但是乱码&#xff0c;IE下编码查看是UTF-8&#xff0c;但是是乱码&#xff0c;如果选…

zookeeper 负载_ZooKeeper,策展人以及微服务负载平衡的工作方式

zookeeper 负载Zookeeper如何确保每个工人都能从工作委托经理那里愉快地完成工作。 Apache ZooKeeper是注册&#xff0c;管理和发现在不同计算机上运行的服务的工具。 当我们必须处理具有许多节点的分布式系统时&#xff0c;它是技术堆栈中必不可少的成员&#xff0c;这些节点…

高效的企业测试-集成测试(3/6)

本系列的这一部分将展示如何通过代码级以及系统级集成测试来验证我们的应用程序。 &#xff08;代码级&#xff09;集成测试 集成测试一词有时在不同的上下文中使用不同。 根据Wikipedia的定义&#xff0c;我指的是在代码级别上验证多个组件之间相互作用的测试。 通常&#x…

带Prometheus的Spring Boot和测微表第4部分:基础项目

在以前的文章中&#xff0c;我们介绍了Spring Micrometer和InfluxDB。 所以你要问我为什么普罗米修斯。 原因是Prometheus在InfluxDB的拉模型与推模型上进行操作。 这意味着&#xff0c;如果将千分尺与InfluxDB一起使用&#xff0c;则在将结果推送到数据库中时肯定会有一些开…

前端如何实现网络速度测试功能_分析Web前端测试要点,从架构原理上进行分析,希望大家能够掌握...

基于Web前端分析过程&#xff0c;大概有十几个测试要点&#xff0c;我们今天主要来讲解结合前五个要点进行详细解说。前端测试点主要针对前端展开&#xff0c;什么叫前端分析呢&#xff1f;就是我们所有的分析和测试要点所站的视角都是针对客户端或者浏览器来对系统进行分析和测…

将Websocket与Spring Framework和Vuejs结合使用

Websocket是客户端和服务器之间的全双工&#xff08;持久&#xff09;连接&#xff0c;因此两者可以彼此共享信息&#xff0c;而无需重复建立新的连接。 这消除了从客户端重复轮询以从服务器获取更新的需要。 并非所有浏览器都支持Websocket&#xff0c;因此我们利用SockJS ja…