Q: JavaのコネクトとScalaのコネクタの違いは何ですか?

A: Javaのコネクト(jdbc-connector)とScalaのコネクタ(ldbc-connector)は、どちらもデータベースへの接続を提供しますが、以下の点で異なります。

A: Javaのコネクト(jdbc-connector)

Javaのコネクトは、従来のJDBC APIを利用してデータベースに接続します。

import com.mysql.cj.jdbc.MysqlDataSource
import cats.effect.IO
import ldbc.dsl.DBIO

// データソースの設定とJDBCコネクタの利用例
val ds = new com.mysql.cj.jdbc.MysqlDataSource()
ds.setServerName("127.0.0.1")
ds.setPortNumber(13306)
ds.setDatabaseName("world")
ds.setUser("ldbc")
ds.setPassword("password")

val provider = ConnectionProvider.fromDataSource[IO](ex, ExecutionContexts.synchronous)

// JavaのJDBC APIに基づく接続の利用例
provider.use { conn =>
  // PreparedStatementなどを利用してSQLを実行
  DBIO.pure(()).commit(conn)
}

A: Scalaのコネクタ(ldbc-connector)

Scalaのコネクタは、型安全性と関数型プログラミングを活かしてデータベース接続を管理します。

import cats.effect.IO
import ldbc.connector.*
import ldbc.dsl.DBIO

// ldbc-connectorを利用してコネクションを作成する例(JVM, Scala.js, Scala Native対応)
val provider =
  ConnectionProvider
    .default[IO]("127.0.0.1", 3306, "ldbc", "password", "ldbc")
    .setSSL(SSL.Trusted)

// Scalaコネクタの利用例:内部でResourceを使って接続後に自動でクローズを保証
provider.use { conn =>
  // ldbc DSLやDBIOを使ってSQLを実行できる
  DBIO.pure(()).commit(conn)
}

A: 主な違い

参考資料