なんか浅い話になりそうですが、つらつらと。
プログラムからDBを扱いたいという時にはいくつかの選択肢があります。
- 生SQLを書く
- ORMを利用する
- クエリビルダを利用する
ここではORMとクエリビルダを分けて書いていますが、
ORM(Object-Relational Mapping)は名前の通り、クエリ結果をプログラム上から参照しやすいようにオブジェクトに変換してくれるというもので、
クエリビルダはSQLをプログラムから扱いやすいようにしてくれるというものです。
両方の機能を備えているライブラリも多いです。
ORMライブラリを使うと、クエリ結果をオブジェクトに詰めるという作業が省けるので便利(※オブジェクトの変更をDBに反映するという機能もあったります)
クエリビルダを使うと、構文エラーなどの実行時エラーを予め防ぎやすいので便利
一方で、できるだけ生のSQLを書きたいというニーズに応えるライブラリも存在します。
複雑なクエリを書きたい場合には生SQLに近い方が直感的に読みやすいor性能出しやすい、などの理由があるんでしょう。
さて、Java界隈のDBライブラリで最近のスタンダートってどんなものがあるんでしょうか。
JavaだとMyBatisばっかり使ってたので正直あんまり知らないんですよね。
たぶん、世の中的にはJavaといえばSpring Bootだと思うのでSpring Bootと組み合わせてよく使われるライブラリが良い気がします。
となると、Spring Dataに載っている方法が良いのかな。
具体的には、
あたりでしょうか。
Spring Data JDBCは名前からすると生SQL的なものなのかなと思いましたが、ドキュメントを読んでみるとJPAから複雑さを排除したORMというような感じでした。CrudRepositoryインターフェースを継承したRepositoryクラスを定義すると、対象テーブルにアクセスするCRUDのメソッドが実装されるようです。(@Queryアノテーションで生SQLも書けます。)
R2DBCは、RDBでリアクティブプログラミングをするというもののようです。面白そう。
他にも、jOOQ(クエリビルダ的なライブラリ)、Doma2(生SQL寄りなライブラリ)があったりします。

ちなみに、Google Trends的にはMyBatisが一番検索されてるみたい。
Spring JDBCは名前から低レイヤーっぽい印象を受けるので、名前で損してそう。
なんかまとまりもオチもないですが、そんな感じです。