java的数据库原生使用jdbc,中间件有很多,例如说hibernate、mybatis、jdbi,这几种是最常用的中间件。
怎么选择
一般情况下,如果始终只会使用到一种数据库,jdbc就是最好的选择了,使用这种方式,就是直接使用最底层的东西,定位问题等都非常方便。
数据库中间件就是节省开发人力,用很少的代码就可以快速开发。但是也会引入一些复杂度,特别是如果对中间件不熟悉或者中间件存在bug,会导致更高复杂度。
如果使用数据库中间件,各种中间件都有各自的优劣势,对于相关的东西需要了解清楚,否则会导致不恰当的选择。
jdbi
jdbi是我比较喜欢的一个数据库中间件,它是非ORM的,特别适合于数据库固定不变的场景,即不会对应多种数据库,以后也不会更换数据库的场景。如果不是这种场景,那么使用jdbc或者最好选择hibernate等对多种数据库兼容较好的中间件。
基于上述使用场景,jdbi的优点有:
和jdbci比较接近,使用和掌握非常简单。
与时俱进,例如说现在最新的jdbi3,增加了流式编程函数式等编程风格。
源代码的实现思路非常清晰,有一种美感。使用jdbi封装出的数据库代码也非常清晰。
jdbi的两种风格
Fluent Api
handle.createUpdate("INSERT INTO user(id, name) VALUES (:id, :name)")
.bind("id", 2)
.bind("name", "Clari