Java 8:在2分钟内将智能流与数据库一起使用

快速流媒体

当Java 8最终问世时,我和一些大学开始了一个开源项目,以利用Java 8的流库使整个Java / DB问题进一步向前发展,以便将数据库表视为纯Java 8流。 速度诞生了! 哇,现在我们可以做类型安全的数据库应用程序了,而不必再编写SQL代码了。在上世纪90年代,我们的Java开发人员不得不努力使数据库应用程序正常工作。 有很多编码,调试和调整。 尽管如此,应用程序还是经常面对我们不断增加的痛苦而爆炸。 随着更好的语言,JDBC和框架支持,事情随着时间的推移逐渐得到改善。 我想我们的开发人员也有所改进,但是对此有不同的看法……

杜克和尖塔映射流。

杜克和尖塔映射流。

Speedment连接到现有数据库并生成Java代码。 然后,我们可以使用生成的代码使用标准Java 8流方便地查询数据库。 随着新版本2.3的问世,我们甚至可以进行并行查询流!

让我们举一些例子,假设我们定义了以下数据库表:

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(45) NOT NULL,`firstName` varchar(45) DEFAULT NULL,`lastName` varchar(45) DEFAULT NULL,`email` varchar(45) NOT NULL,`password` varchar(45) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `email_UNIQUE` (`email`),UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB;

开源数据库MySQL,PostgreSQL和MariaDB免费提供Speedment。 还支持商业数据库(如Oracle)作为企业附加功能。

例子

查询方式

选择所有带有“ .com”邮件地址的用户并打印:

users.stream().filter(EMAIL.endsWith(".com")).forEach(System.out::println);

选择名字为“ Adam”或“ Cecilia”的用户,并按用户名顺序对其进行排序,然后选择其中的前10位并提取电子邮件地址并进行打印。

users.stream().filter(FIRST_NAME.in("Adam", "Cecilia")).sorted(USERNAME.comparator()).limit(10).map(User::getEmail).forEach(System.out::println);

创建数据库内容

创建一个新用户并将其持久保存在数据库中:

users.newEmptyEntity().setUsername("thorshammer").setEmail("mastergamer@castle.com").setPassword("uE8%3KwB0!").persist();

更新数据库内容

查找id = 10的用户并更新密码:

users.stream().filter(ID.equal(10)).map(u -> u.setPassword("pA6#nLaX1Z")).forEach(User::update);

删除数据库内容

删除ID = 100的用户:

users.stream().filter(ID.equal(100)).forEach(User::remove);

新酷玩法:并行查询

做某种昂贵的手术
对于10_000 <= id <20_000的用户并行

users.stream().parallel().filter(ID.between(10_000, 20_000)).forEach(expensiveOperation());

设定

上面示例的安装代码:

final Speedment speedment = new JavapotApplication().withPassword("javapot") // Replace with your real DB password.build();final Manager<User> users = speedment.managerOf(User.class);

加速入门

在GitHub上了解有关如何开始使用Speedment的更多信息。

翻译自: https://www.javacodegeeks.com/2016/04/java-8-use-smart-streams-database-2-minutes.html

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

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

相关文章

MapReduce 详解

MapReduce的整个运行分为两个阶段&#xff1a; Map和Reduce Map阶段由一定数量的Map Task组成 输入格式的数据格式化&#xff1a;InputFormat 数日数据的处理:Mapper 数据分组&#xff1a;Partitioner 下面流程图&#xff1a; 1. Map task 首先从HDFS上Read文件&#xff0c;通过…

16福师计算机应用基础在线作业,16春季福师《计算机应用基础》在线作业二.doc...

16春季福师《计算机应用基础》在线作业二福师《计算机应用基础》在线作业二一、单选题(共 40 道试题&#xff0c;共 80 分。)1. ( )都是系统软件。. OS 和MIS. WPS和UNIX. UNIX和Wor. OS和UNIX正确答案&#xff1a;2. 在幻灯片浏览视图中&#xff0c;下列( )操作不能实现。. 复…

早期访问中具有NetBeans的Oracle公共云Java服务

谁期望发生这种情况&#xff1a;Oracle正在开发公共云产品&#xff0c;并且即将开始正式启动的迹象已经出现。 在正式宣布之后将近一年&#xff0c;我被邀请加入所谓的“抢先体验”计划&#xff0c;以试驾新服务并提供反馈。 多亏负责产品的经理Reza Shafii &#xff0c;我才可…

如何解析C语言的声明

一个声明&#xff1a;int *p[] 分为四部分&#xff1a; &#xff08;1&#xff09;p &#xff08;2&#xff09;p右面的符号&#xff08;可以什么都没有&#xff09; &#xff08;3&#xff09;p左面的符号&#xff08;可以什么都没有&#xff09; &#xff08;4&#xff09;最…

HTML5调整图像垂直边距,77.通过vspace和hspace属性可以分别调整图像的垂直边距和水平边距。()()...

具有东方建筑特色、&#xff0e;通图像规模宏大、气势雄伟的古代建筑群是( )属性水平完成规定的大作业分别Which of the following parks are the urban parks of New York?调整的垂Which of the following countries have once occupied New York city in the 17th century?…

JLBH示例1 –为什么应在上下文中对代码进行基准测试

在这篇文章中&#xff1a; 使用JMH和JLBH进行日期序列化的并排示例 在微基准中测量日期序列化 测量日期序列化作为适当应用程序的一部分 如何为您的JLBH基准添加探针 了解在上下文中衡量代码的重要性 在上一篇文章“ JLBH简介 ”中&#xff0c;我们介绍了JLBH&#xff08…

Javac可以编译,Java显示找不到或无法加载主类

运行时候加入完整包名。转载于:https://www.cnblogs.com/theWinter/p/8594354.html

计算机科学技术专业发展分析,计算机科学与技术发展现况分析

摘要&#xff1a;在这个科技突飞猛进发展的时代&#xff0c;计算机网络已经家喻户晓&#xff0c;在日常生活中也起着不可忽视的作用&#xff0c;计算机的发展提高了人们的生活质量&#xff0c;加快了信息的传播&#xff0c;现如今&#xff0c;各个国家都比较重视计算机科学与技…

Linux中拷贝和移动文件

拷贝和移动文件 序号 命令 对应英文 作用 01 tree [目录名] tree 以树状图列出文件目录结构 02 cp 源文件 目标文件 copy 复制文件或目录 03 mv 源文件 目标文件 move 移动文件或者目录 / 文件或者目录重命名 tree tree 命令可以以树状图列出文件目录结构 选项 …

计算机网络中对等层,【计算机网络】两个网络模型——OSI参考模型和TCP/IP模型...

计算机网络 两个网络模型计算机网络模型分层机制----规划通讯细节层与层之间之间是独立的、屏蔽的&#xff0c;下层为上层提供服务。一些概念实体&#xff1a;任何发送/接收信息的软件/硬件进程。对等层&#xff1a;两个不同系统的同级层次。对等实体&#xff1a;位于不同系统中…

aspect spring_使用Aspect和Spring Profile进行电子邮件过滤

aspect spring在Web应用程序开发期间&#xff0c;经常需要发送电子邮件。 但是&#xff0c;有时数据库中会包含来自生产的数据&#xff0c;并且存在在电子邮件测试执行期间向真实客户发送电子邮件的风险。 这篇文章将解释如何避免在没有在发送电子邮件功能中明确编写代码的情况…

SQL FOREIGN KEY 约束

SQL Primary KeySQL CheckSQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。 让我们通过一个例子来解释外键。请看下面两个表&#xff1a; "Persons" 表&#xff1a; Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2Bus…

台式计算机欢迎界面下不去,Win7系统开机不显示欢迎界面的方法

现在办公人员做事情都讲究效率&#xff0c;甚至连电脑开机都不放过&#xff0c;win7系统加快开机速度的方法有很多种&#xff0c;开机不显示欢迎界面便是其中之一。有些用户觉得开机显示欢迎界面是非常浪费时间的一件事&#xff0c;想要删除电脑中的欢迎界面。但是很多电脑白不…

CompressedOops:Java压缩参考简介

在本文中&#xff0c;我们将向您介绍一种称为Compressed oops的JVM优化。 压缩oop的概念是由32位和64位体系结构之间的差异引起的。 因此&#xff0c;我们将对64位体系结构进行简短的回顾&#xff0c;然后再深入探讨压缩oop的主题。 最后&#xff0c;我们将通过一个简单的示例看…

CentOS7桌面版系统使用的一些小技巧

1、 清空~/.kde/ 文件下的文件&#xff0c;登陆后不显示桌面的解决方法 在使用CentOS7 桌面系统时&#xff0c;有时候打开文件会很卡。这时我们需要清空当前用户下的 .kde 文件下的所有文件。 再重新登陆该用户时&#xff0c;会发现桌面上的图标都不显示了。 首先查看一下系统语…

计算机网络流量图阅读与理解,计算机网络流量监控的设计与实现

摘要&#xff1a;网络管理的重要工作是进行实时网络监控,网络监控主要是进行网络流量,状态,行为信息的采集,将采集的信息进行统计和分析,得到网络的流量状态数据,采集的网络流量信息包括了动态信息和静态信息两部分,本文在此基础上,进行了网络流量监控管理系统的研究. 本文首先…

阿里一面经验总结

今天的面试很突然&#xff0c;中午十一点收到电话通知&#xff0c;下午五点面试&#xff0c;之前毫无准备【以后要坚决杜绝这种情况】&#xff0c;一共六个小时&#xff0c;可以说是特别紧张的&#xff0c;从挂断电话就一直坐卧不安&#xff0c;主要还是没复习心里没底&#xf…

html本地访问超时时限,本地主机访问不了nginx 页面,请求超时

SQL Tuning 基础概述04 - Oracle 表的类型及介绍Tables A table describes an entity such as employees. You define a table with a table name, such as ...数据库连接池原理 与实现(动脑学院Jack老师课后自己的练习有感)第一步: 首先创建一个数据库连接池的接口: 数据库连接…

[LintCode笔记了解一下]64.合并排序数组

Given two sorted integer arrays A and B, merge B into A as one sorted array. 思路: 因为A的后面的部分都是空的留出来给我们放元素,所以最好是从后往前塞元素进去 void mergeSortedArray(int A[], int m, int B[], int n) {// write your code hereint i m-1;int j n-1;…

微型计算机常用的worm是,2010江西省计算机等级考试试题 二级C试题考试答题技巧...

1、当前使用的微型计算机&#xff0c;其主要器件是由( B )构成的。A、晶体管 B、大规模、超大规模集成电路C、中、小规模集成电路 D、微处理器集成电路2、下列字符中&#xff0c;ASCII码值最小的是( B )A、a B、A C、x D、Y3、在计算机的应用中&#xff0c;“OA”表示( C)A、管…