En İyi 50 JDBC Röportaj Soruları ve Cevapları (2026)

JDBC Mülakat Soruları ve Cevapları

Bir sonraki JDBC mülakatınıza hazırlanıyor musunuz? Önceden planlama yapmak, JDBC mülakat ortamını ve düşünceli soruların hem adaylar hem de işverenler için süreçte ne gibi bilgiler ortaya çıkarabileceğini anlamak anlamına gelir.

JDBC becerileri, teknik deneyim ve alan uzmanlığının gerçek dünya veri erişim ihtiyaçlarını desteklediği modern uygulama geliştirme alanında güçlü fırsatlar sunar. Bu alanda çalışan profesyoneller, analiz yeteneklerini ve temel deneyimlerini kullanarak, günümüzde yeni mezunlardan deneyimli mühendislere, orta düzey geliştiricilere ve kıdemli ekip liderlerine kadar herkesin karşılaştığı yaygın ve ileri düzey zorlukların üstesinden gelirler.
Daha fazla oku…

👉 Ücretsiz PDF İndir: JDBC Mülakat Soruları ve Cevapları

JDBC Mülakatında Sorulması Gereken En Sık Sorulan Sorular ve Cevaplar

1) JDBC nedir ve neden önemlidir? Java uygulamalar?

JDBC (Java Veritabanı Bağlantısı, veritabanı bağlantısına olanak sağlayan bir API'dir. Java İlişkisel veritabanlarıyla etkileşim kurmak için kullanılan bir uygulamadır. SQL ifadeleri göndermek, veri almak ve işlemleri yönetmek için standartlaştırılmış bir arayüz sağlar. JDBC, bu uygulamalar arasında bir köprü görevi görür. Java Kod ve veritabanı sürücüsü, platformdan bağımsız veritabanı işlemlerini mümkün kılar. Başlıca avantajı, mutlak olmasıdır.tracSağladığı avantaj — geliştiriciler veritabanlarını değiştirebilir (örneğin, MySQL, Oracle, PostgreSQL(Minimum kod değişikliğiyle.)

Örnek: Bir web uygulaması, JDBC kullanarak kullanıcı bilgilerini bir kaynaktan alabilir. MySQL veritabanı aracılığıyla Connection, Statement, ve ResultSet nesneler.


2) Farklı JDBC sürücü türleri nelerdir? Özelliklerini açıklayın.

JDBC, performans ve yerel koda bağımlılık açısından farklılık gösteren dört tür sürücü tanımlar.

Sürücü Tipi İsim Açıklama Avantajlar Dezavantajlar
1 yazın JDBC-ODBC Köprüsü JDBC çağrılarını ODBC çağrılarına dönüştürür. Kullanımı kolay ODBC kurulumu gerektirir.
2 yazın Yerel API JDBC çağrılarını yerel veritabanı API'lerine dönüştürür. Tip 1'den daha iyi performans Platforma bağlı
3 yazın Ağ Protokolü Çağrıları çevirmek için ara yazılım kullanır. Veritabanından bağımsız Ek ağ yükü
4 yazın İnce Sürücü JDBC çağrılarını veritabanına özgü protokole dönüştürür. En iyi performans; saf Java Veritabanına özgü sürücü gereklidir.

Taşınabilirlikleri ve yüksek performansları nedeniyle modern uygulamalarda Tip 4 sürücüler tercih edilmektedir.


3) Bir JDBC programının yaşam döngüsünü açıklayın.

JDBC yaşam döngüsü, bağlantı kurma, sorguları yürütme ve kaynakları verimli bir şekilde kapatma gibi temel adımlardan oluşur.

  1. Yük Sürücüsü Sınıfı: kullanma Class.forName("com.mysql.cj.jdbc.Driver").
  2. Bağlantı Kurun: İçinden DriverManager.getConnection().
  3. İfade Nesnesi Oluştur: Statement, PreparedStatementya da CallableStatement.
  4. SQL Sorgularını Çalıştır: kullanma executeQuery() or executeUpdate().
  5. İşlem Sonuçları: Verileri şu yöntemle alın: ResultSet.
  6. Kaynakları Kapat: Sızıntıları önlemek için bağlantıları ve çıkış noktalarını serbest bırakın.

Bu yaşam döngüsünün doğru yönetimi, kurumsal sistemlerde istikrarı, ölçeklenebilirliği sağlar ve bellek veya bağlantı havuzu tükenmesini önler.


4) Statement, PreparedStatement ve CallableStatement arasındaki fark nedir?

Bu arayüzler, JDBC'de SQL sorgularını yürütmenin farklı yollarını temsil eder.

arayüzey İçin kullanılır özellikleri Örnek E-posta
Açıklama Basit SQL sorguları Parametre kabul etmiyor. statement.executeQuery("SELECT * FROM users");
Hazır Beyanı parametreli SQL SQL enjeksiyonunu önler, performansı artırır. ps.setString(1, "John");
Çağrılabilir Bildirimi Saklı yordamlar Veritabanı fonksiyonlarını çalıştırmak için kullanılır. cs.call("{call getUser(?)}");

PreparedStatement'lar, güvenlik ve ön derleme avantajları nedeniyle en yaygın kullanılanlardır.


5) JDBC'de işlemleri nasıl yönetirsiniz?

JDBC işlemleri, gruplama yoluyla veri bütünlüğünü sağlar.ping Birden fazla işlemi tek bir mantıksal birime birleştirme. Geliştiriciler işlemleri aşağıdaki gibi manuel olarak kontrol edebilirler:

  1. Otomatik kaydetmeyi devre dışı bırak: conn.setAutoCommit(false);
  2. Birden fazla SQL sorgusu çalıştırın.
  3. Başarıya odaklanın: conn.commit();
  4. Başarısızlık durumunda geri alma: conn.rollback();

Bu, atomikliği sağlar; ya tüm işlemler başarılı olur ya da hiçbiri başarılı olmaz.

Örnek: İki hesap arasında para transferi, tutarsız verileri önlemek için tek bir işlem içinde gerçekleştirilen hem borç hem de alacak sorgularını içerir.


6) JDBC bağlantı havuzlamanın avantajları ve dezavantajları nelerdir?

Bağlantı havuzlama, her seferinde yeni bağlantılar oluşturmak yerine aktif bağlantıları yeniden kullanarak veritabanı performansını artırır.

Görünüş Avantajlar Dezavantajlar
Performans Bağlantı oluşturma maliyetini azaltır. Dikkatli yapılandırma gerektirir.
ölçeklenebilirlik Büyük kullanıcı yüklerini verimli bir şekilde destekler. Bağlantıların bayatlamasına yol açabilir.
Kaynak yönetimi Veritabanı bağlantılarını optimize eder. Hata ayıklamayı karmaşıklaştırır.

HikariCP veya Apache DBCP gibi çerçeveler kullanmak, kurumsal düzeydeki sistemler için verimli ve güvenilir bağlantı havuzlaması sağlar.


7) execute(), executeQuery() ve executeUpdate() fonksiyonları arasındaki farkı açıklayın.

Bu üç yöntem şunlara aittir: Statement arayüz oluşturur ve farklı amaçlara hizmet eder:

Yöntem Kullanım çantası Dönüş Tipi Örnek E-posta
uygulamak() Herhangi bir SQL komutu boole Saklı prosedürler için
Sorguyu çalıştır() SELECT sorguları Sonuç kümesi Kayıtları getirir
yürütmekGüncelleme() EKLE, GÜNCELLE, SİL int (etkilenen satırlar) Verileri değiştirir.

Örnek:

ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEE");
int count = stmt.executeUpdate("UPDATE EMPLOYEE SET salary=5000 WHERE id=1");

Bu ayrımları anlamak, JDBC'de SQL ifadelerinin doğru şekilde yürütülmesini sağlar.


8) JDBC performansını nasıl iyileştirebilirsiniz?

JDBC performansı çeşitli en iyi uygulamalar yoluyla geliştirilebilir:

  • Kullanım Hazır Beyanı Önceden derlenmiş SQL için.
  • Uygulamak toplu güncellemeler Toplu veri işlemleri için.
  • Kullanım bağlantı havuzu sık sık yeni bağlantılar kurmak yerine.
  • Yalnızca gerekli sütunları alın, diğerlerini değil. SELECT *.
  • Sızıntıları önlemek için kaynakları düzgün şekilde kapatın.

Örnek: kullanma addBatch() hem de executeBatch() 1000 kayıt için veritabanına gidiş geliş sayısını önemli ölçüde azaltarak verimliliği artırır.


9) JDBC'de toplu güncellemeler nedir? Nasıl çalışırlar?

Toplu güncellemeler, birden fazla SQL sorgusunun birlikte yürütülmesine olanak tanıyarak veritabanıyla iletişimi en aza indirir.

Adımlar:

  1. Hat için bir PreparedStatement.
  2. Birden fazla sorgu eklemek için addBatch().
  3. Hepsini şu şekilde yürütün: executeBatch().

Örnek:

PreparedStatement ps = conn.prepareStatement("INSERT INTO student VALUES(?, ?)");
ps.setInt(1, 1); ps.setString(2, "Alice"); ps.addBatch();
ps.setInt(1, 2); ps.setString(2, "Bob"); ps.addBatch();
ps.executeBatch();

Toplu işlem, büyük ölçekli veri ekleme veya güncelleme işlemlerinde performansı önemli ölçüde artırır.


10) JDBC'de ResultSet arayüzünün rolü nedir?

ResultSet SQL sorgusu çalıştırılarak oluşturulan bir veri tablosunu temsil eder. Satırlar üzerinde yineleme yapılmasına ve sütun değerlerine erişilmesine olanak tanır. getXXX() yöntemleri.

Örnek:

ResultSet rs = stmt.executeQuery("SELECT name FROM employees");
while(rs.next()) {
   System.out.println(rs.getString("name"));
}

ResultSet Türleri:

  • YALNIZCA İLERİ YAZMA – Sadece ileriye doğru hareket edebilir.
  • TİP_KAYDIRMA_DUYARSIZ – Kaydırılabilir ancak veritabanı değişikliklerine duyarlı değildir.
  • TİP_KAYDIRMA_HASSASİYETİ – Veritabanındaki gerçek zamanlı değişiklikleri yansıtır.

ResultSet Sorgu sonuçlarını verimli ve esnek bir şekilde okumak için temel bir unsurdur.


11) JDBC ve ODBC arasındaki fark nedir?

JDBC (Java Veritabanı Bağlantısı (Database Connectivity) ve ODBC (Open Database Connectivity) her ikisi de veritabanı erişimine olanak tanır, ancak platform bağımlılığı ve kullanım açısından temel olarak farklılık gösterirler.

faktör JDBC ODBC
Dil SAF Java C tabanlı
Platform Platform bağımsız Platforma bağlı
Sürücü Türleri Tip 1–4 Tek ODBC sürücüsü
Performans Daha Yüksek (Tip 4) Köprüleme nedeniyle daha düşük
kullanım Java uygulamaları Windowstabanlı programlar

Özet: JDBC şunlar için özel olarak tasarlanmıştır: Java Çeşitli ortamlarda sorunsuz veritabanları arasında taşınabilirlik sunar. ODBC çok yönlü olmasına rağmen, ek yerel katman bağımlılıkları getirir; bu da JDBC'yi modern işletmeler için daha üstün bir seçenek haline getirir. Java uygulamaları.


12) JDBC mimarisinin farklı bileşenleri nelerdir?

JDBC mimarisi, veritabanı iletişimini sağlamak için etkileşimde bulunan temel bileşenlerden oluşur:

  1. JDBC API'si – Şu gibi dersler sunmaktadır: Connection, Statement, ve ResultSet.
  2. JDBC Sürücü Yöneticisi – Veritabanı sürücülerinin listesini yönetir.
  3. JDBC Test Sürücüleri – Veritabanı iletişimi için 1-4 tipi uygulamalar.
  4. veritabanı – Gerçek verileri depolayan arka uç sistemi.

Örnek Akış: Java Uygulama → JDBC API → JDBC Sürücü Yöneticisi → JDBC Sürücüsü → Veritabanı

Bu katmanlı yapı, JDBC'nin esneklik, tedarikçi bağımsızlığı ve gelişmiş bakım kolaylığı elde etmesini sağlar.


13) JDBC'de ResultSetMetaData ve DatabaseMetaData nedir?

Her iki sınıf da değerli meta veriler sağlar ancak farklı amaçlara hizmet eder.

Meta Veri Türü Açıklama Örnek Kullanım
Sonuç KümesiMetaVerileri Sorgu sonucundaki sütunlar hakkında bilgi sağlar. rsmd.getColumnName(1)
VeritabanıMetaVeri Veritabanının kendisi hakkında bilgi sağlar. dbmd.getDatabaseProductName()

Örnek:

DatabaseMetaData dbmd = conn.getMetaData();
System.out.println(dbmd.getDriverName());

Bu meta veri arayüzleri, geliştiricilerin alan adlarını veya türlerini kod içine yazmadan veritabanı şema ayrıntılarını dinamik olarak keşfetmelerine yardımcı olur.


14) JDBC işlemlerinde Savepoint'leri nasıl kullanırsınız?

A Kayıt noktası Bir işlem içinde kısmi geri alma işlemlerine olanak tanır. İşlemin tamamını geri almadan işlemin geri alınabileceği bir noktayı işaretler.

Örnek:

conn.setAutoCommit(false);
Savepoint sp1 = conn.setSavepoint("Save1");
// Perform operations
conn.rollback(sp1); // Roll back only to this point
conn.commit();

Faydaları:

  • Büyük işlemler içindeki kontrolü iyileştirir.
  • Toplam geri alma riskini azaltır.
  • Kısmi işlemleri izole ederek veri bütünlüğünü artırır.

Kayıt noktaları özellikle finansal veya çok adımlı veri işlemlerinde kullanışlıdır.


15) JDBC'de RowSet kavramını açıklayın. Türleri nelerdir?

A Satır Kümesi bir uzantısıdır ResultSet Bağlantısız, kaydırılabilir ve seri hale getirilebilir veri erişimini destekleyen. ResultSetBu sayede sürekli bir veritabanı bağlantısına gerek kalmadan kullanılabilir.

RowSet türleri:

  1. JdbcRowSet – Bağlantılı Satır Kümesi.
  2. Önbelleğe alınmışSatır Kümesi – Bağlantısı kesilmiş RowSet.
  3. WebRowSet – XML tabanlı RowSet.
  4. FiltrelenmişSatırKümesi – Verilerin filtrelenmiş görünümü.
  5. JoinRowSet – Birden fazla RowSet'i birleştirir.

Örnek:

CachedRowSet crs = new CachedRowSetImpl();
crs.setUrl("jdbc:mysql://localhost/test");
crs.setCommand("SELECT * FROM EMPLOYEE");
crs.execute();

avantajı: RowSet'ler, hafif ve çevrimdışı veri manipülasyonuna olanak tanır; bu da mobil veya bağlantısız sistemler için idealdir.


16) JDBC, SQL istisnalarını nasıl ele alır?

JDBC, veritabanıyla ilgili hataları şu şekilde ele alır: SQLException Bu sınıf, ayrıntılı hata bilgilerini almak için yöntemler sunar:

  • getErrorCode() – Tedarikçiye özel kodu döndürür.
  • getSQLState() – SQL standart durum kodunu döndürür.
  • getMessage() – Hata açıklamasını sağlar.

Örnek:

try {
   stmt.executeQuery("SELECT * FROM invalid_table");
} catch(SQLException e) {
   System.out.println("Error Code: " + e.getErrorCode());
}

Bahşiş: Daha iyi hata ayıklama için, veri tutarlılığını korumak amacıyla her zaman istisnaları kaydedin ve işlemleri geri alın.


17) JDBC'de toplu işlem nedir ve verimliliği nasıl artırır?

Toplu işlem, birden fazla SQL sorgusunun tek bir birim olarak yürütülmesine olanak tanıyarak, bireysel çağrıların getirdiği ek yükü en aza indirir.

Örnek:

Statement stmt = conn.createStatement();
stmt.addBatch("INSERT INTO STUDENT VALUES(1, 'John')");
stmt.addBatch("INSERT INTO STUDENT VALUES(2, 'Alex')");
stmt.executeBatch();

Avantajları:

  • Şebeke içi gidiş-dönüş seferlerini azaltır.
  • İşlem performansını artırır.
  • Veritabanı bağlantı kullanımını en aza indirir.

Toplu işlem, büyük ölçekli veri aktarımları veya tekrarlayan DML işlemleri için idealdir.


18) JDBC'de farklı ifade türleri nelerdir?

JDBC, her biri farklı kullanım durumları için optimize edilmiş üç ana ifade türü sunar.

Ekstre Türü Açıklama Kullanım çantası
Açıklama Basit SQL sorguları yürütür. Statik SQL için
Hazır Beyanı Parametrelerle önceden derlenmiş SQL Değişkenlerle dinamik SQL için
Çağrılabilir Bildirimi Saklı prosedürleri yürütür. Veritabanı tarafındaki mantığı çağırmak için

Örnek:

CallableStatement cs = conn.prepareCall("{call updateSalary(?)}");
cs.setInt(1, 5000);
cs.execute();

Doğru türü seçmek, daha iyi performans ve bakım kolaylığı sağlar.


19) Kurumsal uygulamalarda JDBC bağlantılarını verimli bir şekilde nasıl yönetirsiniz?

Etkin bağlantı yönetimi, kaynak tükenmesini önler ve ölçeklenebilirliği artırır. En iyi uygulamalar şunlardır:

  • Kullanım Komunite Pooling (Örneğin, HikariCP, DBCP).
  • Daima kapat bir bağlantıdaki finally engellemek.
  • Sık sık açma/kapama işlemlerinden kaçının; mümkün olduğunca yeniden kullanın.
  • Havuz günlüklerini kullanarak bağlantı sızıntılarını izleyin.

Örnek:

try (Connection conn = dataSource.getConnection()) {
   // Operations
}

Pooling, birden fazla iş parçacığının önceden oluşturulmuş bağlantıları paylaşmasına olanak tanıyarak gecikmeyi azaltır ve genel verimliliği artırır.


20) JDBC Deyimi ile Hibernate Oturumu arasındaki fark nedir?

Her ikisi de veritabanlarına erişim sağlasa da, temel özellikleri bakımından önemli ölçüde farklılık gösterirler.tracve işlevsellik.

Özellik JDBC Beyanı Hibernate Oturumu
Seviye Düşük seviyeli API Yüksek seviyeli ORM
Sorgu Türü SQL HQL/Kriter API
işlem Manuel kullanım Yerleşik destek
Haritaping Manuel sütun haritasıping Varlık tabanlı
önbelleğe alma Desteklenmez destekli

Örnek:

  • JDBC: Geliştirici SQL sorgularını manuel olarak yazar.
  • Hibernate: Varlık verilerinden otomatik olarak SQL sorguları üretir.

Hibernate dahili olarak JDBC kullanır ancak ORM yetenekleri, önbellekleme ve işlem yönetimi ekleyerek kurumsal veritabanı işlemlerini basitleştirir.


21) Bir INSERT sorgusu çalıştırıldıktan sonra JDBC'de otomatik olarak oluşturulan anahtarları nasıl alabilirsiniz?

Otomatik olarak oluşturulan anahtarlar, birincil anahtar kimlikleri gibi veritabanı tarafından otomatik olarak oluşturulan değerlerdir. JDBC, bu tür anahtarları sağlar. Statement.RETURN_GENERATED_KEYS bunları geri alma seçeneği.

Örnek:

PreparedStatement ps = conn.prepareStatement(
    "INSERT INTO employee(name, salary) VALUES(?, ?)", 
    Statement.RETURN_GENERATED_KEYS);
ps.setString(1, "Alice");
ps.setDouble(2, 60000);
ps.executeUpdate();

ResultSet rs = ps.getGeneratedKeys();
if(rs.next()) {
    int id = rs.getInt(1);
    System.out.println("Generated ID: " + id);
}

Yarar: Bu özellik, otomatik artan alanlara sahip tablolara veri eklerken, yeni oluşturulan kayıt tanımlayıcılarının kolayca alınmasını sağladığı için çok önemlidir.


22) JDBC'de BLOB ve CLOB nedir ve nasıl ele alınırlar?

BLOB (Binary Large Object) ve CLOB (Character Large Object), resimler, videolar ve büyük metin dosyaları gibi büyük verileri depolamak için kullanılır.

Menşei Depolanan Veriler JDBC Yöntemi
BLOB İkili veri (görüntüler, ses) getBinaryStream() / setBinaryStream()
CLOB Karakter verileri (XML, metin) getCharacterStream() / setCharacterStream()

Örnek:

PreparedStatement ps = conn.prepareStatement("INSERT INTO files VALUES(?, ?)");
FileInputStream fis = new FileInputStream("photo.jpg");
ps.setBinaryStream(1, fis, (int)new File("photo.jpg").length());
ps.executeUpdate();

Not: Kaynak israfını önlemek ve dosya işlemlerinin düzgün yapılmasını sağlamak için akışları daima kapatın.


23) Bir ResultSet'i nasıl kaydırılabilir ve güncellenebilir hale getirebilirsiniz?

Varsayılan olarak, bir ResultSet Bu sayfa yalnızca ileriye doğru kaydırılabilir ve salt okunurdur. Kaydırılabilir ve güncellenebilir hale getirmek için şunları oluşturmanız gerekir: Statement Belirli tür ve eşzamanlılık modlarıyla.

Örnek:

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();

Açıklama:

  • TYPE_SCROLL_INSENSITIVERastgele gezinmeye izin verir, veritabanı değişikliklerini dikkate almaz.
  • CONCUR_UPDATABLEVerilerin doğrudan değiştirilmesine olanak tanır. ResultSet.

24) JDBC'de Veri Kaynağı (DataSource) nedir ve Sürücü Yöneticisinden (DriverManager) farkı nedir?

DataSource Bağlantı havuzları veya dağıtılmış işlemler aracılığıyla bağlantıları yönetmek için kullanılan bir arayüzdür. Diğer yöntemlere göre daha fazla esneklik sağlar. DriverManager.

Görünüş Sürücü Yöneticisi Veri kaynağı
Menşei Temel bağlantı yönetimi Gelişmiş bağlantı havuzu
Arama URLtabanlı JNDI tabanlı
Reus yeteneği Her seferinde yeni bağlantılar oluşturur. Ortak bağlantıları yeniden kullanır.
En iyi kullanımı Küçük uygulamalar Girişimcilik sistemleri

Örnek:

Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("jdbc/mydb");
Connection conn = ds.getConnection();

Ölçeklenebilirliği ve performansı artırmak için tüm kurumsal uygulamalar için DataSource önerilir.


25) JDBC'de PreparedStatement ile Toplu İşleme'nin nasıl kullanılacağını açıklayın.

Toplu işleme ile PreparedStatement Benzer SQL ifadelerinin toplu olarak verimli bir şekilde yürütülmesine olanak tanır.

Örnek:

PreparedStatement ps = conn.prepareStatement("INSERT INTO student VALUES(?, ?)");
for(int i=1; i<=5; i++){
   ps.setInt(1, i);
   ps.setString(2, "Student" + i);
   ps.addBatch();
}
ps.executeBatch();

Avantajları:

  • Ağ gecikmesini azaltır.
  • Veritabanı iletişimini en aza indirir.
  • İşlem verimliliğini artırır.

Bu yöntem, özellikle binlerce kayıt eklerken veya tekrarlayan güncellemeler yaparken kullanışlıdır.


26) JDBC'de DatabaseMetaData kullanarak veritabanı meta veri analizini nasıl gerçekleştirirsiniz?

DatabaseMetaData Veritabanı ve sürücü yetenekleri hakkında ayrıntılı bilgi sağlar.

Örnek:

DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("Database: " + dbmd.getDatabaseProductName());
System.out.println("Driver: " + dbmd.getDriverName());
System.out.println("URL: " + dbmd.getURL());

Yaygın Kullanım Alanları:

  • Desteklenen SQL özelliklerini belirleyin.
  • Tablo, şema ve sütun bilgilerini alın.
  • Sürücü uyumluluğunu doğrulayın.

Bu özellik, özellikle dinamik veritabanı uyarlanabilirliği gerektiren uygulamalarda oldukça faydalıdır.


27) JDBC'de execute(), executeQuery() ve executeUpdate() fonksiyonları arasındaki farklar nelerdir?

Bu yöntemler, farklı türdeki SQL sorgularını çalıştırmak için kullanılır.

Yöntem Geri dönüşler Kullanım çantası
execute() boole Birden fazla sonuç veya saklı prosedür için kullanılır.
executeQuery() Sonuç kümesi SELECT sorguları için kullanılır.
executeUpdate() int (etkilenen satırlar) INSERT, UPDATE, DELETE işlemleri için kullanılır.

Örnek:

int rows = stmt.executeUpdate("UPDATE EMPLOYEE SET salary=6000 WHERE id=101");

Kilit nokta: Sorgunun doğru şekilde yürütülmesini ve en iyi performansı sağlamak için her zaman doğru yöntemi seçin.


28) JDBC kaynaklarını kapatmak için en iyi uygulamalar nelerdir?

Uygun kaynak yönetimi, bellek sızıntılarını ve bağlantı tükenmesini önler. Önerilen yaklaşım şudur: kaynakları deneyin in Java.

Örnek:

try (Connection conn = DriverManager.getConnection(url, user, pass);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEE")) {
    while (rs.next()) {
        System.out.println(rs.getString("name"));
    }
}

En İyi Uygulamalar:

  • Her zaman yakın ResultSet, Statement, ve Connection.
  • Daha iyi yönetim için bağlantı havuzlarını kullanın.
  • Gereksiz açık bağlantılardan kaçının.

29) Yaygın olarak kullanılan bazı JDBC performans optimizasyon teknikleri nelerdir?

JDBC'de performans iyileştirmesi, gereksiz yükü azaltmaya ve verimliliği artırmaya odaklanır.

Optimizasyon Teknikleri:

  1. Kullanım bağlantı havuzu (Örneğin, HikariCP).
  2. tercih ederim Hazır Beyanı tekrar Statement.
  3. Uygula toplu güncellemeler Toplu ek parçalar için.
  4. Kullanım boyutu getir Büyük sonuçlar için ayarlama.
  5. Yalnızca gerekli sütunları al (SELECT column1, column2).
  6. Operasyonları birleştirerek ağ içi gidiş-dönüş sayısını en aza indirin.

Örnek:

stmt.setFetchSize(1000);

Bu optimizasyonlar, toplu olarak uygulama hızını, ölçeklenebilirliğini ve istikrarını artırır.


30) JDBC'de saklı prosedürleri nasıl çağırabilirsiniz?

Saklı prosedürler, veritabanında saklanan önceden derlenmiş SQL ifadeleridir. JDBC bunları kullanır. CallableStatement onları yürütmek için.

Örnek:

CallableStatement cs = conn.prepareCall("{call getEmployeeSalary(?)}");
cs.setInt(1, 101);
ResultSet rs = cs.executeQuery();
while (rs.next()) {
    System.out.println("Salary: " + rs.getDouble(1));
}

Avantajları:

  • Performansı artırır (önceden derlenmiş mantık).
  • Güvenliği artırır (kontrollü erişim).
  • Kodun tekrar kullanımını teşvik eder.

Saklı prosedürler, karmaşık iş mantığını veritabanı katmanı içinde kapsüllemek için idealdir.


31) JDBC Bağlantısı Nedir? Pooling, peki iç işleyişi nasıl?

JDBC Bağlantısı Pooling, veritabanı bağlantılarının tekrar tekrar açılıp kapatılması yerine, önceden oluşturulmuş bağlantıların yeniden kullanılmasını sağlayan bir mekanizmadır.

Bağlantı havuzu başlatıldığında, tanımlanmış sayıda veritabanı bağlantısı oluşturulur ve bellekte tutulur. Bir uygulama bağlantı istediğinde, yeni bir bağlantı oluşturmak yerine havuzdan bağlantı alınır. Kullanımdan sonra, yeniden kullanılmak üzere havuza geri döndürülür.

Avantajları:

  • Bağlantı oluşturma yükünü azaltır.
  • Uygulamanın yanıt verme hızını artırır.
  • Eş zamanlı kullanıcılar için ölçeklenebilirliği artırır.

Çerçeveler gibi HikariCP hem de Apache DBCP Bu havuzları verimli bir şekilde yönetmek için yaygın olarak kullanılırlar.


32) HikariCP kullanarak JDBC'de bağlantı havuzlamayı nasıl yapılandırırsınız?

HikariCP, modern uygulamalarda kullanılan yüksek performanslı bir JDBC bağlantı havuzudur. Java uygulamaları.

Örnek Yapılandırma:

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
config.setUsername("root");
config.setPassword("password");
config.setMaximumPoolSize(10);
HikariDataSource ds = new HikariDataSource(config);
Connection conn = ds.getConnection();

Anahtar Yararları:

  • Son derece hızlı ve hafif.
  • Düşük gecikme süresi ve minimum ek yük.
  • Havuz sağlığını otomatik olarak izler.

HikariCP, üstün hızı ve güvenilirliği nedeniyle Spring Boot ve mikroservisler için tercih edilmektedir.


33) JDBC'de DriverManager ve DataSource arasındaki fark nedir?

İkisi de veritabanı bağlantısı elde etmek için kullanılır, ancak ölçeklenebilirlik ve mimari açısından farklılık gösterirler.

Özellik Sürücü Yöneticisi Veri kaynağı
Bağlantı Türü Doğrudan bağlantı Havuzlanmış / Dağıtılmış
yapılandırma Kodun içine sabit olarak yazılmış. JNDI aracılığıyla harici olarak yapılandırılır.
Performans Alt Daha yüksek
Kurumsal Kullanım Küçük uygulamalar Kurumsal düzeyde sistemler
işlemler Sınırlı XA işlemlerini destekler.

Özet: Süre DriverManager daha basittir, DataSource Web ve kurumsal ortamlara uygun profesyonel bağlantı yönetimi sunar.


34) JDBC'de "Uygun sürücü bulunamadı" hatasının yaygın nedenleri nelerdir?

Bu, JDBC'nin veritabanı sürücüsünü bulamadığı veya yükleyemediği durumlarda sık karşılaşılan bir hatadır.

Nedenler:

  1. JDBC sürücü JAR dosyası classpath'e dahil edilmemiş.
  2. Yanlış JDBC URL biçimi.
  3. Eksik Class.forName() (daha yaşlılar için) açıklama Java sürümleri).
  4. Sürücü ve veritabanı sürümleri arasında uyumsuzluk.

Örnek Düzeltme:

Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "pass");

Doğru sürücü kaydının ve uyumlu sürümlerin sağlanması bu sorunu çözer.


35) JDBC'de SQL enjeksiyon saldırılarını nasıl önleyebilirsiniz?

SQL enjeksiyonu, kötü amaçlı SQL kodunun bir sorguya eklenmesiyle oluşur. En iyi savunma yöntemi şudur: PreparedStatement kullanarak Dize birleştirme yerine.

emniyetsiz Code:

Statement stmt = conn.createStatement();
stmt.executeQuery("SELECT * FROM users WHERE name='" + userInput + "'");

Güvenli Code:

PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE name=?");
ps.setString(1, userInput);

Diğer Önlemler:

  • Girdileri doğrulayın ve temizleyin.
  • Veritabanı ayrıcalıklarını sınırlandırın.
  • Hassas işlemler için saklı prosedürler kullanın.

PreparedStatement'lar özel karakterleri otomatik olarak kaçış karakterleriyle değiştirdikleri için güvenli JDBC kodu için vazgeçilmezdir.


36) JDBC'yi doğrudan kullanmanın, Hibernate gibi ORM çerçevelerini kullanmaya kıyasla avantajları ve dezavantajları nelerdir?

Görünüş JDBC kış uykusuna yatmak
Control Ayrıntılı SQL kontrolü Otomatik ORM haritasıping
Performans Küçük görevler için daha hızlı Biraz daha yavaş (mutlak)tracyon)
Öğrenme eğrisi Kolay Karmaşık
Taşınabilirlik SQL lehçesiyle sınırlıdır. Yüksek (veritabanından bağımsız)
Productivity Manuel kodlama Gereksiz tekrarların azaltılması

Özet: JDBC tam kontrol ve performans sağlar ancak işlemlerin ve nesne eşlemelerinin yönetimi daha fazla çaba gerektirir.pingHibernate, CRUD işlemlerini basitleştirir ve önbellekleme desteği sunar, ancak hafif uygulamalar için gereğinden fazla karmaşık olabilir.


37) JDBC aracılığıyla yürütülen SQL sorgularını nasıl kaydedersiniz?

SQL sorgularının kaydedilmesi, hata ayıklama ve performans izleme için hayati önem taşır.

Teknikler:

  1. JDBC sürücüsü günlük kaydını etkinleştirin:
    Her Ticaretçi İçin Mükemmellik MySQL, Ekle: jdbc:mysql://localhost:3306/test?logger=com.mysql.cj.log.StandardLogger
  2. Günlük çerçevelerini kullanın:
    JDBC'yi SLF4J veya Log4j kesicileriyle sarmalayın.
  3. Bağlantı proxy kütüphaneleri:
    Gibi araçlar P6Spy or veri kaynağı proxy'si JDBC çağrılarını yakalayın ve SQL sorgularını şeffaf bir şekilde kaydedin.

Örnek (P6Spy yapılandırması):

modulelist=com.p6spy.engine.spy.P6SpyFactory
driverlist=com.mysql.cj.jdbc.Driver

Bu araçlar, kod mantığını değiştirmeden yavaş çalışan sorguları belirlemeye ve performansı optimize etmeye yardımcı olur.


38) Çoklu iş parçacıklı bir ortamda JDBC'yi güvenli bir şekilde nasıl kullanabilirsiniz?

JDBC bağlantıları iş parçacığı güvenli değilBu nedenle her iş parçacığı kendi yolunu korumalıdır. Connection, Statement, ve ResultSet.

En İyi Uygulamalar:

  • Kullanım bağlantı havuzu (Örneğin, HikariCP).
  • Paylaşmaktan kaçının Connection İş parçacıkları arasındaki nesneler.
  • Tüm kaynakları kapatın. finally Blok veya try-with-resources.
  • Senkronizasyonu yalnızca paylaşılan nesneler için kullanın, JDBC işlemleri için kullanmayın.

Örnek:

Her iş parçacığı, bağlantı havuzundan bir bağlantı ödünç alır:

Connection conn = dataSource.getConnection();

İşlem tamamlandığında güvenli bir şekilde geri döndürülür. Bu, iş parçacığı izolasyonunu ve veri tutarlılığını sağlar.


39) JDBC, Spring Framework veya Spring Boot ile nasıl entegre edilir?

Spring, sorunsuz JDBC entegrasyonu sağlar. JdbcŞablonBu sayede tekrarlayan kod tekrarları basitleştiriliyor.

Bağlantı yönetimini, istisna çevirisini ve kaynak temizliğini otomatik olarak gerçekleştirir.

Örnek:

@Autowired
private JdbcTemplate jdbcTemplate;
public List<Employee> getEmployees() {
    return jdbcTemplate.query("SELECT * FROM employee", 
        (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("name")));
}

Faydaları:

  • Kılavuz yok try-catch-finally blokları.
  • Tutarlı istisna işleme.
  • Dahili işlem yönetimi.

Spring Boot otomatik olarak yapılandırır DataSource ve üretim hazırlığı için bağlantı havuzlamayı entegre eder.


40) Bir JDBC Bağlantı nesnesinin yaşam döngüsü boyunca farklı durumları nelerdir?

Bir JDBC bağlantısı yaşam döngüsü boyunca birden fazla aşamadan geçer:

Eyalet Açıklama
Başlatıldı Bağlantı nesnesi oluşturuldu ancak henüz bağlanmadı.
Açılış Veritabanıyla bağlantı kuruldu.
İşlemde Bir işlem (transaction) içerisinde SQL işlemleri gerçekleştirmek.
Karar Verildi/Geri Alındı İşlem tamamlandı.
Kapalı Bağlantı havuza geri bırakıldı veya sonlandırıldı.

Örnek Akış:

Connection conn = ds.getConnection();
conn.setAutoCommit(false);
// execute queries
conn.commit();
conn.close();

Bu durumların doğru şekilde yönetilmesi, kurumsal sistemlerde istikrarı sağlar, sızıntıları önler ve işlem bütünlüğünü korur.


41) Dört çeşit JDBC sürücüsü nedir ve performans ve taşınabilirlik açısından aralarındaki farklar nelerdir?

JDBC, JDBC çağrılarını veritabanına özgü işlemlere çevirme biçimleri bakımından farklılık gösteren dört sürücü türü tanımlar.

Menşei İsim Açıklama Taşınabilirlik Performans
1 yazın JDBC-ODBC Köprüsü JDBC çağrılarını ODBC çağrılarına çevirir. Düşük Düşük
2 yazın Yerel API Satıcıya özgü yerel kütüphaneleri kullanır. Orta Orta
3 yazın Ağ Protokolü Çeviri için ara yazılım kullanır. Yüksek ılımlı
4 yazın İnce Sürücü SAF Java Sürücü, veritabanıyla doğrudan iletişim kuruyor. Çok Yüksek Çok Yüksek

Özet: Tip 4 sürücüler, saf performansları nedeniyle günümüzde en çok tercih edilen sürücülerdir. Java Doğası gereği yüksek performans ve platform bağımsızlığı sunar. Eski türleri modern uygulamalarda nadiren kullanılır.


42) JDBC'de işlem izolasyonu nedir ve farklı seviyeleri nelerdir?

İşlem izolasyonu, veritabanı işlemlerinin birbirleriyle nasıl etkileşim kuracağını tanımlar. JDBC, eşzamanlı işlemler arasında veri görünürlüğünü belirleyen standart SQL izolasyon seviyelerini destekler.

İzolasyon Seviyesi önler Açıklama
OKUMA_TAAHHÜT EDİLMEMİŞ Kirli Okumalar İşlenmemiş verileri okur
OKUMA_İŞLEMİ Kirli Okumalar Birçok veritabanında varsayılan değer
TEKRARLANABİLİR_OKUMA Tekrarlanamayan Okumalar İşlem sırasında değişiklikleri engeller.
SERİLEŞTİRİLEBİLİR Hayalet Okumaları En sıkı önlemler, tam izolasyonu sağlar.

Örnek:

conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);

Kilit nokta: Daha yüksek izolasyon, veri tutarlılığını artırır ancak eşzamanlılık performansını düşürebilir; bu nedenle iş ihtiyaçlarına göre seçilmelidir.


43) JDBC dağıtılmış (XA) işlemleri nasıl destekler?

JDBC, dağıtılmış işlemleri aşağıdaki yollarla destekler: XA protokolüBu, birden fazla veritabanını veya sistemi tek bir işlem altında koordine eden bir sistemdir.

Bu işlem şu şekilde gerçekleştirilir:

  • javax.sql.XADataSource Bağlantı havuzlama ve dağıtılmış kontrol için.
  • İşlem Yöneticisi (Örneğin, Atomikos, Bitronix veya Spring'in JTA'sı).

Örnek İş Akışı:

  1. Küresel işleme başlayın.
  2. Birden fazla veritabanına erişim sağlayın.
  3. İki aşamalı onay protokolünü (2PC) kullanarak hazırlayın ve onaylayın.

Kullanım Örneği: Banka transferleri veya birden fazla sistemde ACID uyumluluğu gerektiren kurumsal uygulamalar.

XA işlemleri güçlü olmakla birlikte karmaşıktır ve kilitlenmeleri önlemek için dikkatli yönetim gerektirir.


44) Üretim sisteminde JDBC performansını nasıl profillersiniz?

JDBC performans profillemesi, yavaş çalışan sorguları ve darboğazları belirler.

Araçlar ve Teknikler:

  1. P6Spy veya datasource-proxy SQL ifadelerini kaydetmek ve analiz etmek.
  2. JVisualVM / Java Uçuş Kayıt Cihazı (JFR) Bağlantı kullanımını izlemek için.
  3. Veritabanı düzeyindeki araçlar sevmek MySQL'S EXPLAIN Profil sorgularına.
  4. Metriklerin toplanması Prometheus + Grafana panolarını kullanarak.

En İyi Uygulamalar:

  • Her sorgunun yürütme süresini kaydedin.
  • Uzun süreli işlemleri belirleyin.
  • İndeksleri ve sorgu tasarımını optimize edin.

Profil oluşturma, uygulamaların yoğun yük altında bile veritabanıyla en iyi etkileşimi sürdürmesini sağlar.


45) JDBC bellek sızıntılarının yaygın nedenleri nelerdir ve bunlar nasıl önlenebilir?

Bellek sızıntıları, JDBC kaynakları gibi kaynaklar kullanıldığında ortaya çıkar. Connection, Statementya da ResultSet Düzgün kapatılmamışlar.

Yaygın sebepler:

  • Eksik close() çağırır.
  • Temizleme işlemini kesintiye uğratan istisnalar.
  • Yanlış yapılandırılmış bağlantı havuzları.
  • Bellekte tutulan büyük, işlenmemiş ResultSet'ler.

önleme:

  • Her zaman kullan kaynakları deneyin blokları.
  • yapılandırma maksimumBoştaKalmaSüresi hem de maksimum ömür havuzlarda.
  • Kaçınınping ResultSet Dünya çapında referanslar.

Örnek:

try (Connection conn = dataSource.getConnection();
     Statement stmt = conn.createStatement()) {
     // Execute queries
}

Doğru temizlik, uzun süreli çalışan uygulamalarda istikrarlı bellek kullanımını ve yüksek kullanılabilirliği sağlar.


46) JDBC, mikro hizmetler veya bulut tabanlı ortamlar için nasıl optimize edilebilir?

Mikro hizmetler ve bulut ortamlarında, hafif ve dayanıklı JDBC kullanımı çok önemlidir.

optimizasyonları:

  • Kullanım HikariCP Hafif bağlantı havuzlaması için.
  • tercih ederim vatansız JDBC oturumları.
  • Kaldıraç kopyaları oku ve önbellekleme (örneğin, Redis).
  • Uygulamak Devre kesiciler (Resilience4j) veritabanı arıza kurtarma için.
  • Kullanım Bağlantı zamanaşımı hem de boş tahliye parametreleri.

Örnek Yapılandırma:

config.setConnectionTimeout(3000);
config.setIdleTimeout(60000);

Amaç: JDBC bağlantılarının konteynerler ve dağıtılmış sistemler genelinde verimli, hataya dayanıklı ve otomatik ölçeklenebilir kalmasını sağlayın.


47) JDBC'de veritabanı bağlantı hatalarını nasıl sorunsuz bir şekilde ele alabilirsiniz?

Dağıtılmış ortamlarda bağlantı hataları kaçınılmazdır; JDBC, uygulamayı çökertmeden bu hataları gidermelidir.

En İyi Uygulamalar:

  1. Bağlantı yeniden denemelerini kullanın Üstel geri çekilme ile.
  2. SQLTransientConnectionException'ı yakala geçici hatalar için.
  3. Yedekleme mantığını uygulayın. veya yeniden deneme kuyrukları.
  4. Veri kaynağı bağlantı havuzlarını kullanın. otomatik kurtarma için.

Örnek:

for (int i = 0; i < 3; i++) {
   try (Connection conn = ds.getConnection()) {
       break; // success
   } catch (SQLTransientConnectionException e) {
       Thread.sleep(1000 * (i + 1)); // exponential retry
   }
}

Bu, geçici veritabanı kesintileri sırasında dayanıklılığı sağlar.


48) JDBC'de commit, rollback ve savepoint arasındaki fark nedir?

Konsept Açıklama Örnek E-posta
Işlemek Bir işlemi kalıcı olarak sonuçlandırır. conn.commit()
Rollback RevSon commit'ten bu yana yapılan tüm değişiklikleri gösterir. conn.rollback()
Kayıt noktası Belirli bir noktaya kısmi geri dönüşe olanak tanır. Savepoint sp = conn.setSavepoint("sp1")

Örnek:

conn.setAutoCommit(false);
Savepoint sp = conn.setSavepoint();
conn.rollback(sp);
conn.commit();

Kullanım Örneği: Kısmi geri alma işleminin tüm diziyi geri almadan yapılması gereken büyük işlemlerde kayıt noktaları çok önemlidir.


49) JDBC veritabanı meta verilerini nasıl ele alır ve bu neden faydalıdır?

JDBC, meta verileri şu yollarla sağlar: VeritabanıMetaVeri hem de Sonuç KümesiMetaVerileri arayüzler.

VeritabanıMetaVerileri: Desteklenen SQL türleri, sürücü sürümü ve şema gibi veritabanı düzeyinde bilgiler sağlar.

ResultSetMetaData: Sütun adları ve veri türleri gibi sonuç kümesi düzeyinde ayrıntılar sağlar.

Örnek:

DatabaseMetaData dbmd = conn.getMetaData();
System.out.println(dbmd.getDatabaseProductName());

Kullanım Alanları:

  • Dinamik sorgu oluşturma.
  • Şema keşif araçları.
  • Veritabanı uyumluluk kontrolleri.

Meta veriler, JDBC'yi birden fazla veritabanı sistemiyle dinamik olarak etkileşim kurması gereken uygulamalar için uyarlanabilir hale getirir.


50) Kurumsal düzeydeki uygulamalarda JDBC kullanımına ilişkin en iyi uygulamalar nelerdir?

Güvenilirlik, ölçeklenebilirlik ve sürdürülebilirlik sağlamak için aşağıdaki JDBC en iyi uygulamalarına uyun:

  1. Her zaman yakın Connection, Statement, ve ResultSet.
  2. Kullanım bağlantı havuzu hem de Veri kaynağı yerine DriverManager.
  3. tercih ederim Hazır Beyanı Parametreli sorgular için.
  4. Uygulamak işlem yönetimi Uygun izolasyon sağlayarak dikkatlice.
  5. Büyük veri çekme boyutlarından kaçının; büyük sonuçlar için sayfalama kullanın.
  6. Kullanım günlük kaydı ve izleme (Örneğin, P6Spy).
  7. Toplu işlemleri ve önbellekleme yönetimini optimize edin.
  8. Hata durumlarını yeniden deneme ve yedekleme mantığıyla düzgün bir şekilde ele alın.

Sonuç: Bu prensiplere uyulması, JDBC uygulamalarının üretim ortamlarında sağlam, yüksek performanslı ve güvenli kalmasını sağlar.


🔍 Gerçek Dünya Senaryoları ve Stratejik Yanıtlarla Birlikte En Sık Sorulan JDBC Mülakat Soruları

Aşağıda, mülakatçıların beklentileri ve güçlü örnek cevaplarla birlikte, özenle hazırlanmış 10 JDBC mülakat sorusu bulunmaktadır.

1) JDBC nedir ve neden önemlidir? Java-tabanlı uygulamalar mı?

Adaydan beklenenler: JDBC'nin temel amacını ve veritabanı bağlantısındaki rolünü anlamak.

Örnek cevap: “JDBC bir Java API'nin etkinleştirdiği Java Uygulamaların standart arayüzler aracılığıyla ilişkisel veritabanlarıyla etkileşim kurmasını sağlar. Bu önemlidir çünkü farklı veritabanı sistemlerinde sorguları yürütmek, verileri almak ve işlemleri yönetmek için tutarlı bir yol sağlar.


2) JDBC sürücülerinin rolünü ve farklı sürücü türlerini açıklayabilir misiniz?

Adaydan beklenenler: Dört sürücü türü ve kullanım alanları hakkında bilgi sahibi olmak.

Örnek cevap: “JDBC sürücüleri, cihazlar arasında iletişimi sağlayan uygulamalardır.” Java Uygulamalar ve veritabanları. Dört türü vardır: Tip 1 (JDBC-ODBC Köprüsü), Tip 2 (Yerel API), Tip 3 (Ağ Protokolü) ve Tip 4 (Saf). Java (sürücü). Tip 4 sürücüler, platformdan bağımsız olmaları ve daha iyi performans sağlamaları nedeniyle günümüzde en yaygın olarak kullanılmaktadır."


3) Büyük ölçekli bir uygulamada veritabanı bağlantılarını verimli bir şekilde nasıl yönetirsiniz?

Adaydan beklenenler: Bağlantı havuzlama ve performans optimizasyonu konusunda farkındalık.

Örnek cevap: “Bağlantıları verimli bir şekilde yönetmek için HikariCP veya Apache DBCP gibi bağlantı havuzlama çerçevelerine güveniyorum. Bu havuzlar, aktif bağlantılardan oluşan bir küme tutarak, sürekli olarak yeni bağlantı oluşturma yükünü azaltır ve yüksek yük altındaki ortamlarda performansı artırır.”


4) Statement, PreparedStatement ve CallableStatement arasındaki farkı açıklayın.

Adaydan beklenenler: İfade türlerini ve her birinin ne zaman kullanılacağını anlamak.

Örnek cevap: "Statement Basit statik SQL sorguları için kullanılır. PreparedStatement Parametreli sorgular için kullanılır ve SQL enjeksiyonunu önlemeye yardımcı olur. CallableStatement "Saklı prosedürleri çalıştırmak için kullanılır. Doğru türü seçmek hem performansı hem de güvenliği artırır."


5) Bana bir uygulamada JDBC performansını optimize ettiğiniz bir zamandan bahsedin.

Adaydan beklenenler: Girişimcilik ve analitik becerileri gösteren gerçek bir senaryo.

Örnek cevap: "Önceki görevimde, bazı sorguların tekrarlanan bağlantı oluşturma işlemleri nedeniyle çok uzun sürdüğünü fark ettim. Bir bağlantı havuzu oluşturdum ve birleştirilmiş SQL sorgularını şu şekilde değiştirdim: PreparedStatement Bu, yalnızca performansı iyileştirmekle kalmadı, aynı zamanda güvenliği de güçlendirdi."


6) JDBC kullanırken SQL enjeksiyonunu nasıl önlersiniz?

Adaydan beklenenler: Güvenlik alanındaki en iyi uygulamalar hakkında bilgi sahibi olmak.

Örnek cevap: “En güvenilir yaklaşım, kullanmaktır.” PreparedStatement Parametreli sorgular kullanıyorum. Bu, kullanıcı girdilerinin yürütülebilir SQL yerine veri olarak ele alınmasını sağlar. Ayrıca, girdi verilerini doğruluyorum ve mümkün olduğunca dinamik SQL oluşturmaktan kaçınıyorum.”


7) Bir JDBC bağlantı hatasını gidermek zorunda kaldığınız bir durumu açıklayın. Hangi adımları attınız?

Adaydan beklenenler: Mantıksal hata ayıklama süreci ve problem çözme becerileri.

Örnek cevap: “Önceki görevimde, bir üretim uygulaması veritabanına bağlanmada sorun yaşamaya başladı. Ağ yapılandırmasını kontrol ettim, kimlik bilgilerini doğruladım ve JDBC'yi inceledim.” URL Kayıtları inceledikten sonra, veritabanı geçişi sırasında değişmiş olan yanlış yapılandırılmış bir port buldum. Bunu düzelttikten sonra... URL Sorunu çözdük.”


8) JDBC'de işlemleri nasıl yönetirsiniz ve neden önemlidirler?

Adaydan beklenenler: Anlayışı commit, rollbackve ACID uyumluluğu.

Örnek cevap: “JDBC, uygulamaların işlemleri yönetmesine olanak tanır. Connection Nesne. Otomatik kaydetmeyi devre dışı bırakabilir, birden fazla işlem yürütebilir ve ardından çağırabilirim. commit or rollback Sonuca bağlı olarak. İşlem yönetimi, veri bütünlüğünü sağlar ve ACID özelliklerini destekler."


9) JDBC kullanarak çözdüğünüz zorlu bir veritabanı sorununu anlatın.

Adaydan beklenenler: Hata ayıklama, optimizasyon veya karmaşık SQL işlemleri konusunda deneyim.

Örnek cevap: “Önceki işimde, büyük veri kümelerinin toplu olarak eklenmesini gerektiren bir özellik üzerinde çalıştım. İlk uygulama kayıtları tek tek ekliyordu, bu da performans sorunlarına neden oluyordu. Toplu işlemeyi kullanarak mantığı geliştirdim.” PreparedStatementBu da işlem süresini önemli ölçüde azalttı."


10) Birden fazla projenin aynı anda ve sıkı zaman kısıtlamaları altında JDBC geliştirmelerine ihtiyaç duyduğu bir senaryoyu nasıl ele alırdınız?

Adaydan beklenenler: Zaman yönetimi, önceliklendirme ve iletişim.

Örnek cevap: “Her bir iyileştirmenin aciliyetini, etkisini ve karmaşıklığını değerlendirerek işe başlardım. Paydaşlara zaman çizelgelerini açıkça iletir, görevleri yönetilebilir bölümlere ayırır ve en kritik maddelere öncelik verirdim. Gerekirse, kod kalitesini korurken zamanında teslimatı sağlamak için ekip üyeleriyle iş birliği yapardım.”

Bu yazıyı şu şekilde özetleyin: