Q: What is the difference between a Java connector and a Scala connector?

A: While both Java connector (jdbc-connector) and Scala connector (ldbc-connector) provide database connectivity, they differ in the following aspects:

A: Java Connector (jdbc-connector)

The Java connector uses traditional JDBC API to connect to databases.

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

// Example of datasource configuration and JDBC connector usage
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)

// Example of using Java JDBC API-based connection
provider.use { conn =>
  // Execute SQL using PreparedStatement etc.
  DBIO.pure(()).commit(conn)
}

A: Scala Connector (ldbc-connector)

The Scala connector manages database connections leveraging type safety and functional programming.

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

// Example of creating a connection using ldbc-connector (JVM, Scala.js, Scala Native compatible)
val provider =
  ConnectionProvider
    .default[IO]("127.0.0.1", 3306, "ldbc", "password", "ldbc")
    .setSSL(SSL.Trusted)

// Example of using Scala connector: automatically ensures connection closure using Resource internally
provider.use { conn =>
  // Can execute SQL using ldbc DSL and DBIO
  DBIO.pure(()).commit(conn)
}

A: Key Differences

References