50 essentiële JDBC-interviewvragen en antwoorden van experts (2026)

Voorbereiding op een JDBC-interview vereist een diepgaande kennis van databaseconnectiviteit, prestatieafstemming en best practices op het gebied van beveiliging. De volgende 50 vragen behandelen kernconcepten en scenario's uit de praktijk waar recruiters prioriteit aan geven.
👉 Gratis pdf-download:vragen en antwoorden over JDBC-interviews
1) Wat is JDBC en waarom is het belangrijk in Java-toepassingen?
JDBC (Java Database Connectivity) is de kern-API waarmee Java-programma's kunnen communiceren met relationele databases. Het standaardiseert de uitvoering van SQL, de verwerking van resultaten en het transactiebeheer, waardoor ontwikkelaars database-onafhankelijke code kunnen schrijven die met minimale wijzigingen kan schakelen tussen MySQL, Oracle, PostgreSQL en andere.
2) Wat zijn de vier typen JDBC-stuurprogramma's en hun belangrijkste verschillen?
- Type1 (JDBC‑ODBC-brug) :Overbrugt JDBC naar ODBC; eenvoudig te gebruiken, maar vereist ODBC en is traag.
- Type2 (native API) :Roept native DB-bibliotheken op; sneller dan Type1 maar platformafhankelijk.
- Type3 (netwerkprotocol) :gebruikt middleware om oproepen te vertalen; database-agnostisch maar voegt netwerkoverhead toe.
- Type4 (dunne driver) :Pure Java, communiceert rechtstreeks met DB; hoogste prestaties en draagbaarheid. De meeste moderne apps gebruiken Type4.
3) Geef een overzicht van de levenscyclus van een JDBC-programma.
- Laad het stuurprogramma:
Class.forName("com.mysql.cj.jdbc.Driver") - Maak een
ConnectionviaDriverManagerof eenDataSource. - Maak een
Statement,PreparedStatement, ofCallableStatement. - Voer de SQL uit (query, update of procedure).
- Verwerk de
ResultSetindien van toepassing. - Sluit alle bronnen (bij voorkeur
try‑with‑resources).
4) Wanneer moet u Statement, PreparedStatement of CallableStatement gebruiken?
- Verklaring :Statische SQL; snel voor eenmalige vragen.
- PreparedStatement :Geparametriseerde zoekopdrachten; beschermt tegen SQL-injectie en verbetert de prestaties door precompilatie.
- CallableStatement :Opgeslagen procedures of functies; omvat complexe DB-logica.
5) Hoe beheer je transacties in JDBC?
- Automatische toewijzing uitschakelen:
conn.setAutoCommit(false) - Voer meerdere instructies uit.
- Over succes,
conn.commit(); bij falen,conn.rollback().
Gebruik dit patroon voor atomaire operaties zoals geldoverboekingen.
6) Wat zijn de voor- en nadelen van JDBC-verbindingspooling?
- Voordelen :Hergebruikt verbindingen, vermindert de latentie, schaalt onder belasting.
- Nadelen :Vereist een zorgvuldige configuratie; Er kunnen verouderde verbindingen optreden als deze niet worden vernieuwd.
Frameworks zoals HikariCP en Apache DBCP zijn industriestandaarden.
7) Maak onderscheid tussen execute(), executeQuery() en executeUpdate().
execute():Elke SQL; retourneertbooleangeeft aan of eenResultSetwordt geproduceerd.executeQuery():SELECT-instructies; retourneert eenResultSet.executeUpdate():INVOEGEN, BIJWERKEN, VERWIJDEREN; retourneert het getroffen aantal rijen.
8) Welke strategieën verbeteren de JDBC-prestaties?
- Gebruik
PreparedStatementvoor precompilatie. - Batch-updates via
addBatch()/executeBatch(). - Verbindingspooling.
- Selecteer alleen de benodigde kolommen.
- Sluit bronnen onmiddellijk.
9) Uitleg over batchupdates in JDBC.
PreparedStatement ps = conn.prepareStatement("INSERT INTO student VALUES(?,?)");
for(int i=1;i<=1000;i++){
ps.setInt(1,i);
ps.setString(2,"Name"+i);
ps.addBatch();
}
ps.executeBatch(); Vermindert retourritten en verhoogt de doorvoer.
10) Welke rol speelt ResultSet?
ResultSet bevat queryresultaten. Het kan alleen voorwaarts, scrollbaar of updatebaar zijn, afhankelijk van de aanmaakvlaggen.
11) Vergelijk JDBC en ODBC.
- JDBC:puur Java, platformonafhankelijk, hoge prestaties.
- ODBC:C-gebaseerd, platformafhankelijk, vereist native stuurprogramma's.
12) Identificeer JDBC-architectuurcomponenten.
- JDBC API (verbinding, verklaring, resultaatset).
- Chauffeursbeheer (registreert chauffeurs).
- Stuurprogramma-implementaties (Type1-4).
- Database-backend.
13) Leg ResultSetMetaData versus DatabaseMetaData uit.
- ResultSetMetaData :Kolomnamen, typen van een specifieke zoekopdracht.
- DatabaseMetaData :Naam stuurprogramma, databaseproduct, ondersteunde SQL-functies.
14) Hoe gebruik ik Savepoints?
conn.setAutoCommit(false);
Savepoint sp = conn.setSavepoint("sp1");
// operations
conn.rollback(sp); // partial rollback
conn.commit(); 15) Definieer RowSet en zijn varianten.
- JdbcRowSet – verbonden.
- CachedRowSet – niet verbonden, serialiseerbaar.
- WebRowSet – op XML gebaseerd.
- FilteredRowSet – bekijken met filters.
- JoinRowSet – voegt meerdere RowSets samen.
16) Hoe gaat JDBC om met SQL-uitzonderingen?
SQLException biedt getErrorCode() , getSQLState() , en getMessage() . Altijd loggen en terugdraaien bij een fout.
17) Wat is batchverwerking?
Groepeer meerdere DML-instructies in één retour; gebruik addBatch() en executeBatch() .
18) Geef de instructietypen opnieuw weer.
- Verklaring – statische SQL.
- PreparedStatement – geparametriseerd.
- CallableStatement – opgeslagen procedures.
19) Efficiënt verbindingsbeheer.
Geef de voorkeur aan DataSource met verbindingspooling. Gebruik try‑with‑resources voor automatisch opruimen.
20) JDBC-verklaring versus slaapstandsessie.
- JDBC:handmatige mapping op laag niveau.
- Slaapstand:ORM, caching, automatische SQL-generatie.
21) Automatisch gegenereerde sleutels ophalen.
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.executeUpdate(); ResultSet rs = ps.getGeneratedKeys();
22) BLOB- en CLOB-afhandeling.
- BLOB – binaire streams.
- CLOB – karakterstreams.
23) ResultSet scrollbaar/bijwerkbaar maken.
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEE");
rs.absolute(3);
rs.updateString("name", "UpdatedName");
rs.updateRow(); 24) Gegevensbron versus DriverManager.
- DriverManager – eenvoudig, geen pooling.
- DataSource – JNDI-zoekopdracht, pooling, XA-ondersteuning.
25) Batchverwerking met PreparedStatement.
for(int i=1;i<=5;i++){
ps.setInt(1,i);
ps.setString(2,"Student"+i);
ps.addBatch();
}
ps.executeBatch(); 26) DatabaseMetaData gebruiken.
DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("DB: " + dbmd.getDatabaseProductName()); 27) Samenvatting van uitvoeringsvarianten.
- execute() – booleaanse waarde.
- executeQuery() – ResultaatSet.
- executeUpdate() – int.
28) JDBC-bronnen sluiten.
try (Connection c = ds.getConnection();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM EMPLOYEE")) {
while(rs.next()){ /* process */ }
} 29) Algemene prestatie-optimalisaties.
- Verbindingspooling.
- Voorbereid op verklaring boven verklaring.
- Batch-updates.
- Afstelling van de grootte van het ophalen.
- Selectief ophalen van kolommen.
30) Opgeslagen procedures oproepen.
CallableStatement cs = conn.prepareCall("{call getEmployeeSalary(?)}");
cs.setInt(1,101);
ResultSet rs = cs.executeQuery(); 31) Interne JDBC-verbindingspooling.
Bij het begin creëert een pool een vaste set verbindingen. Verzoeken om een aansluiting te lenen; retourneert het na gebruik, waardoor de bronnen in het geheugen blijven.
32) Configureer HikariCP.
HikariConfig cfg = new HikariConfig();
cfg.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
cfg.setUsername("root");
cfg.setPassword("pw");
cfg.setMaximumPoolSize(10);
HikariDataSource ds = new HikariDataSource(cfg); 33) DriverManager versus DataSource.
- DriverManager – direct, geen pooling.
- Gegevensbron – samengevoegd, XA, JNDI.
34) Veelvoorkomende oorzaken van 'Geen geschikt stuurprogramma gevonden'.
- JAR van stuurprogramma ontbreekt in klassenpad.
- Onjuiste JDBC-URL.
- Ontbreekt
Class.forName()(vóór Java9). - Driver-DB-versie komt niet overeen.
35) Voorkom SQL-injectie.
- Gebruik altijd
PreparedStatementmet parameters. - Valideren en opschonen van gebruikersinvoer.
- Beperk DB-rechten.
36) JDBC versus ORM (slaapstand).
- JDBC:fijne controle, handmatige mapping, lichtgewicht.
- Slaapstand:automatische ORM, caching, hogere leercurve.
37) SQL-query's loggen.
- Schakel logboekregistratie van stuurprogramma's in (bijvoorbeeld MySQL's
logger=com.mysql.cj.log.StandardLogger). - Gebruik P6Spy of datasource-proxy om te onderscheppen en te loggen.
38) Veilig multithreaden met JDBC.
- Deel
Connectionniet objecten in threads. - Leen een verbinding uit een pool per thread.
- Sluit bronnen met try-with-resources.
39) JDBC in lente-/veerlaars.
Lente JdbcTemplate verwerkt automatisch de boilerplate, vertaling van uitzonderingen en het poolen van verbindingen.
40) JDBC-verbindingsstatussen.
- Geïnitialiseerd → Open → In transactie → Vastgelegd/teruggedraaid → Gesloten.
41) Samenvatting van stuurprogrammatypen.
- Type1 – lage prestaties, vereist ODBC.
- Type2 – native, gemiddelde prestaties.
- Type3 – middleware, matige prestaties.
- Type4 – puur Java, hoogste prestaties.
42) Transactie-isolatieniveaus.
- READ_UNCOMMITTED – vuile leesbewerkingen.
- READ_COMMITTED – standaard, voorkomt vuile leesbewerkingen.
- REPEATABLE_READ – voorkomt niet-herhaalbare leesbewerkingen.
- SERIALISEERBAAR – strikte isolatie, vermijdt fantoomlezen.
43) Gedistribueerde (XA) transacties.
- Gebruik
javax.sql.XADataSourceen een JTA-manager (Atomikos, Bitronix, Spring). - Two-phase commit coördineert commits over meerdere DB's.
44) JDBC-prestaties profileren.
- P6Spy, gegevensbron-proxy voor het loggen van zoekopdrachten.
- Java Flight Recorder / JVisualVM voor verbindingsgebruik.
- Database EXPLAIN-plannen voor het afstemmen van zoekopdrachten.
- Prometheus + Grafana voor statistieken.
45) JDBC-geheugenlekken voorkomen.
- Sluit altijd
ResultSet,Statement,Connectionvia try-with-resources. - Configureer pooltime-outs (maxIdleTime, maxLifetime).
- Vermijd het buiten bereik houden van ResultSets.
46) JDBC voor microservices/cloud.
- HikariCP voor lichtgewicht poolen.
- Staatloze JDBC-sessies.
- Replica's lezen, caching (Redis).
- Resilience4j-stroomonderbrekers voor DB-failover.
47) Correcte afhandeling van verbindingsfouten.
for(int i=0;i<3;i++){
try(Connection c=ds.getConnection()){ break; }
catch(SQLTransientConnectionException e){ Thread.sleep(1000*(i+1)); }
} 48) Verschillen in commits, rollbacks en savepoints.
- Committeren – voltooit alle wijzigingen.
- Terugdraaien – keert terug naar de laatste commit.
- Opslagpunt – gedeeltelijk terugdraaidoel.
49) Nut van JDBC-metagegevens.
- Dynamische schema-introspectie.
- Controles van databasemogelijkheden.
- Tools voor het genereren van ORM.
50) Best practices voor zakelijke JDBC.
- Gebruik
DataSourcemet poolen. - Geef voorkeur aan
PreparedStatement. - Handel transacties af met de juiste isolatie.
- Batchbewerkingen en paginering.
- Logboek en controleer zoekopdrachten.
- Ga op een elegante manier om met uitzonderingen en nieuwe pogingen.
🔍 Belangrijkste JDBC-interviewvragen met scenario's uit de praktijk en strategische reacties
Hieronder staan 10 zorgvuldig opgestelde JDBC-interviewvragen, met wat interviewers verwachten en sterke voorbeeldantwoorden.
1) Wat is JDBC en waarom is het belangrijk?
Verwacht antwoord: JDBC is de Java API voor databasetoegang; het abstraheert de uitvoering van SQL, de verwerking van resultaten en transacties, waardoor database-onafhankelijke code mogelijk wordt.
2) Leg de typen JDBC-stuurprogramma's uit.
Verwacht antwoord: Vier typen:JDBC‑ODBC Bridge, Native API, Network Protocol, Thin Driver. Type4 komt tegenwoordig het meest voor.
3) Hoe beheer je verbindingen efficiënt?
Verwacht antwoord: Gebruik verbindingspools zoals HikariCP; vermijd het openen/sluiten van verbindingen per verzoek.
4) Maak onderscheid tussen Statement, PreparedStatement en CallableStatement.
Verwacht antwoord: Verklaring – statische SQL; PreparedStatement – geparametriseerd, voorkomt injectie; CallableStatement – opgeslagen procedures.
5) Beschrijf een JDBC-prestatieoptimalisatie die u heeft uitgevoerd.
Verwacht antwoord: String-aaneenschakeling vervangen door PreparedStatement, pooling geïntroduceerd en batch-invoegingen gebruikt; verminderde responstijd met 40%.
6) Hoe voorkom je SQL-injectie?
Verwacht antwoord: Gebruik PreparedStatement; invoer valideren; beperk DB-rechten.
7) Los problemen met een JDBC-verbindingsfout op.
Verwacht antwoord: Controleer URL, inloggegevens, netwerk, driver-jar; logbestanden bekijken; corrigeer de verkeerd geconfigureerde poort.
8) Beheer transacties in JDBC.
Verwacht antwoord: Automatisch vastleggen uitschakelen, bewerkingen uitvoeren, vastleggen of terugdraaien op basis van de uitkomst; zorgt voor ACID-naleving.
9) Los een uitdagend DB-probleem op met JDBC.
Verwacht antwoord: Geïmplementeerde batchverwerking voor bulkinzetstukken, waardoor de tijd van minuten naar seconden wordt teruggebracht.
10) Geef prioriteit aan JDBC-verbeteringen onder strakke deadlines.
Verwacht antwoord: Evalueer de impact, communiceer duidelijk, pak zaken met een grote impact eerst aan, werk samen om aan de SLA te voldoen.
Java
- Java String toLowercase() en toUpperCase() methoden
- Java-vangst Meerdere uitzonderingen
- Java 10 - Inferentie van het lokale variabele type
- Java ConcurrentMap-interface
- Converteer JSON naar XML Java met behulp van Gson en JAXB met Voorbeeld
- Java-scannerklasse
- Java-constructeurs
- Groovy Script-zelfstudie voor beginners
- Java String Replace(), ReplaceAll() en ReplaceFirst() methode
- Java - Besluitvorming
- Java 9 - Overzicht