本章专门介绍Lagom对关系数据库读取端的支持。在阅读本文之前,你应该熟悉Lagom的读侧支持。Lagom支持两种在读取端访问关系数据库的选项:直接使用JDBC API,或使用 Slick。
在JDBC和Slick之间选择
JDBC提供了一个非常低级的API,直接映射到大多数数据库驱动程序的功能。您提供的查询将直接传递到后端数据库,因此它们可能需要使用特定于实现的SQL方言。查询结果作为ResultSet返回,它允许您遍历结果行并检索列数据。
Slick是Scala的现代数据库查询和访问库。它允许您像使用Scala collections一样处理存储的数据,同时让您完全控制何时进行数据库访问以及传输哪些数据。您可以用Scala而不是SQL编写数据库查询,从而受益于Scala的静态检查、编译时安全性和组合性。Slick有一个可扩展的查询编译器,可以为不同的后端生成代码。
将Slick与Lagom服务结合使用不需要任何额外的依赖性。
这两个选项都建立在对在关系数据库中存储持久实体的相同支持之上,并共享相同的偏移量存储。可以在同一个服务中混合使用基于JDBC和基于Slick的读端。
鉴于基于JDBC的使用方式,需要根据不同的数据库类型针对性写特定的SQL语句,而且对于统一视图的定义上过于原始,导致会有很多繁琐细碎的工作需要手动处理,而且返回的结果集同样需要遍历重新塑性到可用的Bean模型中,实际使用中可能很少会直接使用,下面的章节将重点介绍Slick 的方式,如果对于JDBC原生方式感兴趣可以参看Lagom官网JDBC Read-Side Support章节的内容。