ScalikeJDBC是一款给Scala开发者使用的简洁DB访问类库,它是基于SQL的,使用者只需要关注SQL逻辑的编写,所有的数据库操作都交给ScalikeJDBC。这个类库内置包含了JDBC API,并且给用户提供了简单易用并且非常灵活的API。并且,QueryDSL使你的代码类型安全的并且可重复使用。我们可以在生产环境大胆地使用这款DB访问类库。
工作在JDBC层上
不管你喜不喜欢,JDBC是一个稳定的标准接口,而且绝大多数的RDBMS都支持JDBC接口,所以我们可以通过JDBC接口去访问RDBMS里面的数据。ScalikeJDBC目前测试所支持的RDBMS如下:
1、PostgreSQL
2、MySQL
3、H2 Database Engine
4、HSQLDB
我们相信,ScalikeJDBC除了支持上面的数据库,还应该支持其他的RDBMS(比如:Oracle, SQL Server等等)。
支持Amazon Redshift, Facebook Presto
因为Amazon Redshift, Facebook Presto也是支持JDBC的,这意味这你也可以使用ScalikeJDBC来访问里面的是数据。
非常少的依赖
ScalikeJDBC的核心对外部的依赖非常少,所以你不会被依赖所烦恼。ScalikeJDBC仅仅依赖于以下的东西:
1、JDBC Drivers
2、Commons DBCP
3、Joda Time 2.x
4、SLF4J API
当然,你完全可以用c3p0替代commons-dbcp,因为ConnectionPool的实现默认是不提供的。
非阻塞
很不幸的是,JDBC驱动会在套接字IO上阻塞。所以使用JDBC在异步地事件驱动架构中和RDBMS系统交互可能不太合适。然而,实际上大多数现实中的应用程序根本不需要事件驱动架构,JDBC仍然是JVM上应用程序的重要基础设施。
如果你需要使用到非阻塞的数据库访问技术,可以考虑使用ScalikeJDBC-Async
,这个类库提供了基于JDBC的非阻塞方式来访问PostgreSQL和MySQL里面的数据。ScalikeJDBC-Async
类库可以到这里了解:https://github.com/scalikejdbc/scalikejdbc-async
然而ScalikeJDBC-Async
目前还是除于alpha阶段,如果你不是基于研究或者自己修复里面bug的动机,我们不建议你现在去使用,而是等到稳定版本再去使用。
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【ScalikeJDBC:基于SQL的简洁DB访问类库】(https://www.iteblog.com/archives/1597.html)