2. Een JDBC driver voorzien

Samenvatting:

  1. Voeg een vendor-specifieke driver dependency toe
    • Bij voorbeeld, voor MariaDB (let op: als je MySQL of H2 gebruikt moet je daar een driver voor voorzien)
      • groupId: org.mariadb.jdbc
      • artifactId: mariadb-java-client
      • version: 2.7.2 (gebruik maar de laatste stable versie)
  2. Zorg dat je een reload van Maven uitvoert

Gedetailleerde uitleg:

JPA is een framework die onderliggend JDBC gebruikt om connecties met databanken aan te maken en statements uit te voeren.

Als je voorkennis van JDBC hebt dan weet je dat er nood is aan een driver om jouw JDBC-logica te vertalen naar een specifieke database-vendor zijn flavour of dialect van SQL (bv. MariaDB, MySQL, H2, etc.). De DriverManager leid af welke implementatie nodig is aan de hand van een URL, en zorgt ervoor dat die automatisch voor jou ingeladen en gebruikt wordt tijdens runtime, maar het is niet zo dat die drivers automatisch op jouw project bestaan, of dat die worden voorzien in de standaard API van de JDK. Wij moeten die nog altijd voorzien.

Elke database-vendor heeft een eigen JDBC driver die gebruikt kan worden voor Java-applicaties. Soms worden die door de ontwikkelaars van de database aangeboden, en soms komt het vanuit de community.

Wij moeten degene die wij nodig hebben binnentrekken. Als wij connecties wensen te maken met een MySQL-databank, dan moeten wij een MySQL-driver voorzien. Als wij connecties wensen te maken met een MariaDB-databank, dan moeten wij een MariaDB-driver voorzien.

Zo een driver is gewoon een klasse die deelmaakt van een grotere .jar bestand, aangeboden door een database-vendor of de community.

Wij kunnen zo een .jar bestand handmatig gaan opsporen online en zelf downloaden en installeren, per project, maar het is een nog betere oplossing om het automatisch te laten binnentrekken en installeren door een dependency manager zoals Maven.

Wij moeten in ons pom.xml bestand dus een dependency toevoegen, en de project coordinates van onze gewenste driver meegeven. Welke deze is hangt af van jouw benodigdheden. Zorg ook dat je daarna een Maven reload uitvoert.

MySQL

Als je, bij voorbeeld, met een lokale MySQL server gaat werken, kan je best op zoek gaan naar een MySQL driver.

  • groupId: mysql
  • artifactId: mysql-connector-java
  • version: 8.0.24 (versie maakt niet veel uit zolang het een stable release is en het 8.0.x volgt)

MariaDB

Als je, bij voorbeeld, met een externe MariaDB server gaat werken, kan je best op zoek gaan naar een MariaDB driver.

  • groupId: org.mariadb.jdbc
  • artifactId: mariadb-java-client
  • version: 2.7.2 (versie maakt niet veel uit zolang het een stable release is en het 2.x.x volgt)

H2

Als je, bij voorbeeld, een embedded, in-memory databank wil gebruiken voor test- en ontwikkel-doeleinden dan kan je best op zoek gaan naar een H2 driver. Gelukkig bevat de API van H2 om H2 zelf op te starten een engine voor JDBC, dus je hoeft enkel H2 zelf binnen te trekken en JDBC zal automatisch de H2-driver vinden en gebruiken.

  • groupId: com.h2database
  • artifactId: h2
  • version: 1.4.200 (versie maakt niet veel uit zolang het een stable release is en het 1.4.x volgt)

Let op: Het is natuurlijk mogelijk om meerdere drivers tegelijk te voorzien. Zo kan je, bij voorbeeld, een H2 driver gebruiken tijdens testing, een lokale MySQL driver gebruiken om een persistente, maar toch lokale databank te gebruiken tijdens development, zonder enige invloed op de “echte” databank die online staat, en dan als derde kan je een MariaDB driver gebruiken voor jouw externe MariaDB databank.