50 Pertanyaan Wawancara Penting &Jawaban Pakar JDBC (2026)

Mempersiapkan wawancara JDBC menuntut pemahaman mendalam tentang konektivitas database, penyesuaian kinerja, dan praktik terbaik keamanan. 50 pertanyaan berikut mencakup konsep inti dan skenario dunia nyata yang diprioritaskan oleh perekrut.
👉 Unduh PDF Gratis:Pertanyaan &Jawaban Wawancara JDBC
1) Apa itu JDBC dan mengapa penting dalam aplikasi Java?
JDBC (Java Database Connectivity) adalah API inti yang memungkinkan program Java berinteraksi dengan database relasional. Ini menstandardisasi eksekusi SQL, penanganan hasil, dan kontrol transaksi, sehingga memungkinkan pengembang untuk menulis kode database-agnostik yang dapat beralih antara MySQL, Oracle, PostgreSQL, dan lainnya dengan sedikit perubahan.
2) Apa saja empat jenis driver JDBC dan perbedaan utamanya?
- Tipe1 (JDBC‑ODBC Bridge) :Menjembatani JDBC ke ODBC; mudah digunakan tetapi memerlukan ODBC dan lambat.
- Tipe2 (API Asli) :Memanggil perpustakaan DB asli; lebih cepat dari Tipe1 tetapi bergantung pada platform.
- Tipe3 (Protokol Jaringan) :Menggunakan middleware untuk menerjemahkan panggilan; database‑agnostik tetapi menambah overhead jaringan.
- Tipe4 (Driver Tipis) :Java Murni, berkomunikasi langsung dengan DB; kinerja dan portabilitas tertinggi. Sebagian besar aplikasi modern menggunakan Type4.
3) Uraikan siklus hidup program JDBC.
- Muat driver:
Class.forName("com.mysql.cj.jdbc.Driver")
- Buat
Connection melalui DriverManager atau DataSource .
- Buat
Statement , PreparedStatement , atau CallableStatement .
- Jalankan SQL (kueri, pembaruan, atau prosedur).
- Memproses
ResultSet jika berlaku.
- Tutup semua sumber daya (pilih
try‑with‑resources ).
4) Kapan sebaiknya Anda menggunakan Statement, PreparedStatement, atau CallableStatement?
- Pernyataan :SQL Statis; cepat untuk pertanyaan satu kali.
- Pernyataan yang Disiapkan :Kueri berparameter; melindungi terhadap injeksi SQL dan meningkatkan kinerja dengan melakukan prakompilasi.
- Pernyataan Callable :Prosedur atau fungsi tersimpan; merangkum logika DB yang kompleks.
5) Bagaimana cara mengelola transaksi di JDBC?
- Menonaktifkan penerapan otomatis:
conn.setAutoCommit(false)
- Jalankan beberapa pernyataan.
- Jika berhasil,
conn.commit(); jika gagal, conn.rollback() .
Gunakan pola ini untuk operasi atomik seperti transfer dana.
6) Apa kelebihan dan kekurangan penggabungan koneksi JDBC?
- Kelebihan :Menggunakan kembali koneksi, mengurangi latensi, melakukan penskalaan saat beban.
- Kekurangan :Memerlukan konfigurasi yang cermat; koneksi yang basi dapat terjadi jika tidak di-refresh.
Kerangka kerja seperti HikariCP dan Apache DBCP adalah standar industri.
7) Bedakan antara mengeksekusi(), mengeksekusiQuery(), dan mengeksekusiUpdate().
execute() :SQL apa saja; mengembalikan boolean menunjukkan jika ResultSet diproduksi.
executeQuery() :pernyataan SELECT; mengembalikan ResultSet .
executeUpdate() :MASUKKAN, PERBARUI, HAPUS; mengembalikan jumlah baris yang terpengaruh.
8) Strategi apa yang meningkatkan kinerja JDBC?
- Gunakan
PreparedStatement untuk prakompilasi.
- Pembaruan batch melalui
addBatch()/executeBatch() .
- Pengumpulan koneksi.
- Pilih hanya kolom yang diperlukan.
- Segera tutup sumber daya.
9) Jelaskan pembaruan batch di 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();
Mengurangi perjalanan pulang pergi dan meningkatkan throughput.
10) Peran apa yang dimainkan ResultSet?
ResultSet menyimpan hasil kueri. Ini dapat bersifat hanya maju, dapat di-scroll, atau dapat diperbarui tergantung pada tanda pembuatan.
11) Bandingkan JDBC dan ODBC.
- JDBC:Java murni, tidak bergantung pada platform, dan berkinerja tinggi.
- ODBC:Berbasis C, bergantung pada platform, memerlukan driver asli.
12) Identifikasi komponen arsitektur JDBC.
- JDBC API (Koneksi, Pernyataan, ResultSet).
- Driver Manager (mendaftarkan driver).
- Penerapan driver (Tipe 1‑4).
- Bagian belakang basis data.
13) Jelaskan ResultSetMetaData vs DatabaseMetaData.
- HasilSetMetaData :Nama kolom, jenis kueri tertentu.
- DatabaseMetaData :Nama driver, produk database, fitur SQL yang didukung.
14) Bagaimana cara menggunakan Savepoint?
conn.setAutoCommit(false);
Savepoint sp = conn.setSavepoint("sp1");
// operations
conn.rollback(sp); // partial rollback
conn.commit(); 15) Tentukan RowSet dan variannya.
- JdbcRowSet – terhubung.
- CachedRowSet – terputus, dapat diserialkan.
- WebRowSet – berbasis XML.
- FilteredRowSet – tampilan dengan filter.
- JoinRowSet – menggabungkan beberapa RowSet.
16) Bagaimana JDBC menangani pengecualian SQL?
SQLException menyediakan getErrorCode() , getSQLState() , dan getMessage() . Selalu masuk dan kembalikan jika terjadi kegagalan.
17) Apa itu pemrosesan batch?
Kelompokkan beberapa pernyataan DML menjadi satu perjalanan bolak-balik; gunakan addBatch() dan executeBatch() .
18) Buat daftar jenis pernyataan lagi.
- Pernyataan – SQL statis.
- PreparedStatement – diparameterisasi.
- CallableStatement – prosedur tersimpan.
19) Manajemen koneksi yang efisien.
Lebih suka DataSource dengan pengumpulan koneksi. Gunakan try‑with‑resources untuk pembersihan otomatis.
20) Pernyataan JDBC vs Sesi Hibernasi.
- JDBC:Pemetaan manual tingkat rendah.
- Hibernasi:ORM, caching, pembuatan SQL otomatis.
21) Ambil kunci yang dibuat secara otomatis.
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
22) Penanganan BLOB dan CLOB.
- BLOB – aliran biner.
- CLOB – aliran karakter.
23) Membuat ResultSet dapat di-scroll/diperbarui.
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) Sumber Data vs DriverManager.
- DriverManager – sederhana, tanpa pengumpulan.
- DataSource – Pencarian JNDI, pengumpulan, dukungan XA.
25) Pemrosesan batch dengan PreparedStatement.
for(int i=1;i<=5;i++){
ps.setInt(1,i);
ps.setString(2,"Student"+i);
ps.addBatch();
}
ps.executeBatch(); 26) Menggunakan DatabaseMetaData.
DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("DB: " + dbmd.getDatabaseProductName()); 27) Rekap varian yang dieksekusi.
- eksekusi() – boolean.
- executeQuery() – Set Hasil.
- executeUpdate() – int.
28) Menutup sumber daya JDBC.
try (Connection c = ds.getConnection();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM EMPLOYEE")) {
while(rs.next()){ /* process */ }
} 29) Pengoptimalan performa umum.
- Pengumpulan koneksi.
- Pernyataan yang Disiapkan atas Pernyataan.
- Pembaruan batch.
- Ambil penyesuaian ukuran.
- Pengambilan kolom selektif.
30) Memanggil prosedur tersimpan.
CallableStatement cs = conn.prepareCall("{call getEmployeeSalary(?)}");
cs.setInt(1,101);
ResultSet rs = cs.executeQuery(); 31) Internal pengumpulan koneksi JDBC.
Pada init, kumpulan membuat serangkaian koneksi tetap. Permintaan meminjam koneksi; mengembalikannya setelah digunakan, menyimpan sumber daya di memori.
32) Konfigurasikan 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 vs Sumber Data.
- DriverManager – langsung, tanpa pengumpulan.
- DataSource – dikumpulkan, XA, JNDI.
34) Penyebab umum “Tidak ditemukan driver yang sesuai”.
- Driver JAR hilang dari classpath.
- URL JDBC salah.
Class.forName() tidak ada (pra‑Java9).
- Versi Driver–DB tidak cocok.
35) Mencegah injeksi SQL.
- Selalu gunakan
PreparedStatement dengan parameter.
- Validasi dan bersihkan masukan pengguna.
- Batasi hak istimewa DB.
36) JDBC vs ORM (Hibernasi).
- JDBC:kontrol halus, pemetaan manual, ringan.
- Hibernasi:ORM otomatis, caching, kurva pembelajaran lebih tinggi.
37) Mencatat kueri SQL.
- Aktifkan logging driver (misalnya,
logger=com.mysql.cj.log.StandardLogger MySQL ).
- Gunakan P6Spy atau proxy sumber data untuk mencegat dan mencatat.
38) Multithreading yang aman dengan JDBC.
- Jangan bagikan
Connection objek di seluruh thread.
- Meminjam koneksi dari kumpulan per thread.
- Tutup sumber daya dengan sumber daya coba-dengan-.
39) JDBC di Musim Semi/Boot Musim Semi.
JdbcTemplate musim semi menangani boilerplate, terjemahan pengecualian, dan pengumpulan koneksi secara otomatis.
40) Status Koneksi JDBC.
- Diinisialisasi → Terbuka → Sedang Bertransaksi → Dikomit/Dibatalkan → Ditutup.
41) Rekap jenis driver.
- Tipe1 – kinerja rendah, memerlukan ODBC.
- Tipe2 – asli, kinerja sedang.
- Tipe3 – middleware, kinerja sedang.
- Tipe4 – Java murni, performa tertinggi.
42) Tingkat isolasi transaksi.
- READ_UNCOMMITTED – bacaan kotor.
- READ_COMMITTED – default, mencegah pembacaan kotor.
- REPEATABLE_READ – mencegah pembacaan yang tidak dapat diulang.
- SERIALISASI – isolasi ketat, menghindari pembacaan bayangan.
43) Transaksi terdistribusi (XA).
- Gunakan
javax.sql.XADataSource dan manajer JTA (Atomikos, Bitronix, Spring).
- Koordinat penerapan dua fase dilakukan di beberapa DB.
44) Membuat profil kinerja JDBC.
- P6Spy, proxy sumber data untuk pencatatan kueri.
- Java Flight Recorder / JVisualVM untuk penggunaan koneksi.
- Rencana Database EXPLAIN untuk penyesuaian kueri.
- Prometheus + Grafana untuk metrik.
45) Mencegah kebocoran memori JDBC.
- Selalu tutup
ResultSet , Statement , Connection melalui coba‑dengan‑sumber daya.
- Konfigurasi batas waktu kumpulan (maxIdleTime, maxLifetime).
- Hindari menahan ResultSets di luar cakupan.
46) JDBC untuk layanan mikro/cloud.
- HikariCP untuk pengumpulan ringan.
- Sesi JDBC tanpa kewarganegaraan.
- Baca replika, caching (Redis).
- Pemutus sirkuit Resilience4j untuk failover DB.
47) Penanganan kegagalan koneksi dengan baik.
for(int i=0;i<3;i++){
try(Connection c=ds.getConnection()){ break; }
catch(SQLTransientConnectionException e){ Thread.sleep(1000*(i+1)); }
} 48) Perbedaan commit, rollback, dan savepoint.
- Berkomitmen – menyelesaikan semua perubahan.
- Kembalikan – kembali ke penerapan terakhir.
- Titik Simpan – target pengembalian sebagian.
49) Kegunaan metadata JDBC.
- Introspeksi skema dinamis.
- Pemeriksaan kemampuan basis data.
- Peralatan untuk pembuatan ORM.
50) Praktik terbaik untuk JDBC perusahaan.
- Gunakan
DataSource dengan pengumpulan.
- Lebih suka
PreparedStatement .
- Menangani transaksi dengan isolasi yang tepat.
- Operasi batch dan penomoran halaman.
- Mencatat dan memantau kueri.
- Tangani pengecualian dan percobaan ulang dengan baik.
🔍 Pertanyaan Wawancara JDBC Teratas dengan Skenario Dunia Nyata &Respons Strategis
Di bawah ini adalah 10 pertanyaan wawancara JDBC yang disusun dengan cermat, dengan harapan pewawancara dan contoh jawaban yang kuat.
1) Apa itu JDBC dan mengapa itu penting?
Jawaban yang diharapkan: JDBC adalah Java API untuk akses database; ini mengabstraksi eksekusi SQL, penanganan hasil, dan transaksi, sehingga memungkinkan kode database-agnostik.
2) Jelaskan jenis driver JDBC.
Jawaban yang diharapkan: Empat jenis:JDBC‑ODBC Bridge, Native API, Network Protocol, Thin Driver. Tipe 4 paling umum saat ini.
3) Bagaimana cara mengelola koneksi secara efisien?
Jawaban yang diharapkan: Gunakan kumpulan koneksi seperti HikariCP; hindari membuka/menutup koneksi per permintaan.
4) Bedakan Pernyataan, Pernyataan yang Disiapkan, dan Pernyataan yang Dapat Dipanggil.
Jawaban yang diharapkan: Pernyataan – SQL statis; PreparedStatement – berparameter, mencegah injeksi; CallableStatement – prosedur tersimpan.
5) Jelaskan pengoptimalan kinerja JDBC yang Anda lakukan.
Jawaban yang diharapkan: Mengganti penggabungan string dengan PreparedStatement, memperkenalkan penggabungan, dan menggunakan sisipan batch; mengurangi waktu respons sebesar 40%.
6) Bagaimana cara mencegah injeksi SQL?
Jawaban yang diharapkan: Gunakan Pernyataan yang Disiapkan; memvalidasi masukan; membatasi hak istimewa DB.
7) Memecahkan masalah kegagalan koneksi JDBC.
Jawaban yang diharapkan: Verifikasi URL, kredensial, jaringan, toples driver; log ulasan; memperbaiki port yang salah dikonfigurasi.
8) Kelola transaksi di JDBC.
Jawaban yang diharapkan: Nonaktifkan komit otomatis, lakukan operasi, komit, atau kembalikan berdasarkan hasil; memastikan kepatuhan ACID.
9) Selesaikan masalah DB yang menantang dengan JDBC.
Jawaban yang diharapkan: Menerapkan pemrosesan batch untuk penyisipan massal, memotong waktu dari menit ke detik.
10) Prioritaskan peningkatan JDBC dalam tenggat waktu yang ketat.
Jawaban yang diharapkan: Evaluasi dampak, komunikasikan dengan jelas, atasi item berdampak tinggi terlebih dahulu, berkolaborasi untuk memenuhi SLA.