Conectar a PostgreSQL en Kotlin con JDBC

En este tutorial enseño cómo crear un proyecto de Gradle (abre la descripción para ver las coordenadas) que utilice el driver JDBC de PostgreSQL para conectarse con un cluster desde una aplicación Kotlin. Recuerda que para conectarte con una base de datos de JDBC necesitas instalar (y en algunos casos activar) un driver en tu proyecto para poder efectuar la conexión. Hacemos un ejemplo muy simple únicamente para probar que la conexión se hace de forma satisfactoria.

Hay una versión nueva de este curso. Haz clic aquí para revisar JDBC, la versión actualizada de este curso.

Conectar Kotlin con PostgreSQL usando JDBC es un proceso sencillo que nos permite interactuar directamente con la base de datos mediante consultas SQL. Para empezar, debemos crear un proyecto en Kotlin configurado con Gradle, lo que facilita la gestión de dependencias y la construcción del proyecto. En nuestro caso, utilizaremos la versión 17 del JDK y el DSL de Kotlin para Gradle, que es la opción recomendada actualmente.

El siguiente paso es agregar la dependencia del driver de PostgreSQL en el archivo build.gradle.kts. Aunque la página oficial de PostgreSQL no proporciona directamente las coordenadas para Gradle, podemos usar las de Maven adaptándolas fácilmente. La dependencia que añadimos es:

implementation("org.postgresql:postgresql:42.6.0")

Es importante verificar que esta versión sea la más reciente en el momento de configurar el proyecto, ya que puede cambiar con el tiempo. Una vez añadida la dependencia, sincronizamos el proyecto para que Gradle descargue el driver y lo integre correctamente.

Una ventaja de usar Gradle es que nos evitamos tener que cargar manualmente el driver con Class.forName, ya que Gradle se encarga de inicializarlo automáticamente.

Para probar la conexión, creamos un objeto en Kotlin con una función main. En este ejemplo, conectamos a una base de datos PostgreSQL local llamada escuela, que contiene una tabla alumnos. La conexión se establece mediante DriverManager.getConnection con una URL que sigue el formato estándar de JDBC para PostgreSQL:

val connection = DriverManager.getConnection(
    "jdbc:postgresql://localhost:5432/escuela"
)

Si fuera necesario, podríamos incluir usuario y contraseña como parámetros adicionales o mediante un objeto Properties.

Con la conexión lista, creamos un Statement y ejecutamos una consulta SQL para obtener los campos nombre, apellido y fecha_nac de la tabla alumnos. Usamos el bloque use para asegurarnos de que los recursos se cierren automáticamente:

connection.createStatement().use { statement ->
    val query = "SELECT nombre, apellido, fecha_nac FROM alumnos"
    statement.executeQuery(query).use { resultSet ->
        while (resultSet.next()) {
            val nombre = resultSet.getString("nombre")
            val apellido = resultSet.getString("apellido")
            val fechaNac = resultSet.getDate("fecha_nac")
            println("$nombre $apellido $fechaNac")
        }
    }
}

Al ejecutar este código, podemos ver en la consola los datos recuperados de la base de datos, confirmando que la conexión y la consulta funcionan correctamente.

A partir de aquí, podemos construir sobre esta base para crear objetos DTO o DAO que nos ayuden a manejar los datos de forma más estructurada y orientada a objetos, siguiendo las prácticas habituales en el desarrollo con JDBC.

Si queremos profundizar más en el uso de bases de datos con Kotlin, existen recursos y tutoriales que explican cómo trabajar con diferentes tecnologías y patrones para facilitar la interacción con bases de datos en aplicaciones Kotlin.

Lista de reproducción
  1. 1
    Presentación de JDBC
    4 minutos
  2. 2
    Instalando MySQL
    7 minutos
  3. 3
    Creando tablas
    9 minutos
  4. 4
    Agregando el driver JAR
    7 minutos
  5. 5
    Estableciendo la conexión
    8 minutos
  6. 6
    Statement y ResultSet
    9 minutos
  7. 7
    Bobby Tables y PreparedStatement
    8 minutos
  8. 8
    Transacciones y MySQL
    6 minutos
  9. 9
    Transacciones, commits y rollbacks (parte 1)
    7 minutos
  10. 10
    Transacciones, commits y rollbacks (parte 2)
    6 minutos
  11. 11
    Ejemplo: Crear modelos
    9 minutos
  12. 12
    Ejemplo: Crear los DAO (parte 1)
    10 minutos
  13. 13
    Ejemplo: Crear los DAO (parte 2)
    12 minutos
  14. 14
    Ejemplo: Crear los DAO (parte 3)
    13 minutos
  15. 15
    Ejemplo: DAO Manager
    12 minutos
  16. 16
    Ejemplo: CRUD Alumnos (parte 1)
    15 minutos
  17. 17
    Ejemplo: CRUD Alumnos (parte 2)
    14 minutos
  18. 18
    Ejemplo: CRUD Alumnos (parte 3)
    13 minutos
  19. 19
    Ejemplo: CRUD Profesores
    25 minutos
  20. 20
    Ejemplo: CRUD Asignaturas
    alrededor de 1 hora
  21. 21
    Ejemplo: Login (final adelantado)
    17 minutos
  22. 22
    Conectar a PostgreSQL en Java con JDBC
    8 minutos
  23. 23
    Conectar a PostgreSQL en Kotlin con JDBC
    7 minutos
  24. 24
    Conectar a PostgreSQL en Java con JDBC (con NetBeans)
    10 minutos