Java 8 Streams 中的数据库 CRUD 操作
接触一个新工具的时候,刚开始要克服的最大障碍就是如何让你自己先尝试做出一个小东西来。现在你也许对 Java 8 中新的 Stream API 的运作方式在理解上比较自信,但你也许并没用它来进行过数据库查询操作。为了帮助你开始使用 Stream API 来对 SQL 数据库进行创建、修改和读取操作, 我已经在这个快速开始的教程中把它们整合到了一起。希望它能帮助你提升对流式API的使用水平!
背景
Speedment 是一个开放源代码的工具集 ,它可以被用来生成 Java 实体,并且能将我们同数据库的通信过程管理起来。你可以利用一个图形工具连接到数据库并生成出一套完整的 ORM 框架代码来表示域模型。但是 Speedment 不单单只是一个代码生成器而已,它还是一个能插入应用程序中的运行时程序,这样就有可能将你的 Java 8 流式代码翻译成优化过的SQL查询。这也是我将会在本文中专门讲述的一个部分。
生成代码
要在一个 Maven 工程中开始使用 Speedment,需要你将下面几行代码添加到你的 pom.xml 文件中。在本例中,我使用的是 MySQL,而你也可以选择使用 PostgreSQL 或者 MariaDB。面向于像Oracle这样的专有数据库可用于企业级客户。
Pom.xml
3.0.1
mysql
mysql-connector-java
5.1.39
com.speedment
${speedment.version}
pom
${db.groupId}
${db.version}
com.speedment
${speedment.version}
${db.groupId}
${db.version}
现在你可以访问到许多新的 Maven 资源库,它们能让你更加轻松的使用这个工具包。要启动Speedment UI, 执行如下命令:
mvn speedment:tool
这样就会有一个过程引导你连接到数据库并对代码生成进行配置。一开始最简单的方法就是用默认的设置先跑起来再说。当你按下生成按钮“Generate,”Speedment 就会对你的数据库元数据进行分析,然后在你的工程中添加像实体和实体管理器这样的类。
初始化 Speedment
当你的域模型生成好了以后,Speedment 的设置就容易了。创建一个新的 Main.java 文件然后添加如下几行代码。你看到的类都是生成的,因此它们的命名都是根据数据库模式、表以及列的名称来决定的。
Main.java
public class Main {
public static void main(String... param) {
final HaresApplication app = new HaresApplicationBuilder()
.withPassword("password")
.build();
}
}
上面的代码创建了一个新的应用程序实体,它使用了一种生成的构造器模式。构造器是的对任何运行时配置细节的设置成为可能,例如数据库的密码。
当我们有了一个应用实体,就可以用它来访问生成的实体管理器了。在这里,我的数据库中有了四个表; “hare”, “carrot”, “human”, 以及 “friend”. (你可以在这里找到完整的数据库定义)。
final CarrotManager carrots = app.getOrThrow(CarrotManager.class);
final HareManager hares = app.getOrThrow(HareManager.class);
final HumanManager humans = app.getOrThrow(HumanManager.class);
final FriendManager hares = app.getOrThrow(FriendManager.class);
现在这些实体管理器可以被用来执行所有的CRUD操作了。