Statement ve PreparedStatement’tan hangisi tercih edilmeli?

7 Ekim 2010
Bu yazıyı beğendiysen paylaşmayı unutma :)
Pin It

JDBC aracılığı ile örneğin MySql gibi bir veritabanı ile SELECT yaptığınızı kabul edelim. Bu işlemi hem Statement hem de PreparedStatement özelliği ile yapabilirsiniz. Fakat bu iki kullanımdan hangisini kullanmak daha avantajlı?Öncelikle iki özellik için de iki ayrı SELECT uygulaması hazırlayalım.

– Statement ile MySql SELECT İşlemi

// MySql veritabanına bağlantı için gerekli kodlarımızı oluşturalım.
String surucu = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/";
String veritabaniAdi = "databaseAdi";
Class.forName(surucu);
Connection conn = DriverManager.getConnection(url+veritabaniAdi, "kullaniciAdi", "parola");

// SQL sorgumuzu hazırlayalım.
String sorgu = "SELECT * FROM tbl_kullanicilar WHERE Kullanici = 'Egemen'";

// Statement'ı oluşturalım.
Statement statementDurumu = conn.createStatement();

// Sorguyu çalıştıralım.
ResultSet rsResultSet = statementDurumu.executeQuery(sorgu);

// Elde ettiğimiz kayıt setini yazdıralım.
while (rsResultSet.next())
{
String ad = rsResultSet.getString("Kullanici");

// Kayıtları yazdıralım.
System.out.format("%s\n", ad);
}

statementDurumu.close();
conn.close();

– PreparedStatement ile MySql SELECT İşlemi

// MySql veritabanına bağlantı için gerekli kodlarımızı oluşturalım.
String surucu = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/";
String veritabaniAdi = "databaseAdi";
Class.forName(surucu);
Connection conn = DriverManager.getConnection(url+veritabaniAdi, "kullaniciAdi", "parola");

// PreparedStatement'ı oluşturup, kullanalım
String sorgu = "SELECT * FROM tbl_kullanicilar WHERE Kullanici = ?";
PreparedStatement preparedStatementDurumu = (PreparedStatement) conn.prepareStatement(sorgu);
preparedStatementDurumu.setString (1, "Egemen");

// PreparedStatement'i çalıştıralım.
ResultSet rsResultSet = preparedStatementDurumu.executeQuery();

// ResultSet i yazdıralım.
while (rsResultSet.next()) {
String ad = rsResultSet.getString("Kullanici");
// Kayıtları yazdıralım.
System.out.format("%s\n", ad);
}

preparedStatementDurumu.close();
conn.close();

İki ayrı durumu kod olarak hazırladığımıza göre gelelim iki durumun farkına.  Statement durumunda yazdığınız sql sorgusu, her çağırıldığında database tarafında cache’te sorgunun bir örneğini saklar. Bu işlemin için binlerce kez yapıldığını düşündüğünüzde iş yaptığınız kurumun DBA (Database Administrator)’ı ile başınız derde girecek demektir. Zira bu durum sisteminizin yavaşlamasına sebebiyet verecektir. Fakat PreparedStatement‘ı kullandığınızda örnek bir kez oluşturup, parametrik değerlerini set ederek kullanılır. Böylelikle database tarafında cache’te bir tane sql saklanır.

Benzer Yazılar


DeliPenguen'i Google+'da bulun



1Geri İzlemeler

  1. Anonim Pingback | 2012/07/30