2013-05-03 15 views
28

Spring3.x'e yeni başladım, Spring DAO desteğini öğreniyorum. NamedParameterJdbcTemplate ve JdbcTemplate arasındaki farkı bilmek istiyorum. Performans ile hangisi en iyisidir. Ve ne zaman NamedParameterJdbcTemplate için gitmek ve ne zaman JdbcTemplate için gitmek için. Cevabınız benim gibi yeni başlayanlara çok yardımcı olacaktır.NamedParameterJdbcTemplate vs JdbcTemplate

+3

Neden javadoc'u okumadınız? Farkın ne olduğunu açıklayabileceğini düşünmüyor musun? Performans söz konusu olduğunda, sorgunun oluşturulması ve yürütülmesi çok fazla önemli değildir. Önemli olan, sorgunun kendisidir. –

cevap

4

Ölçülebilir bir fark performansı yoktur. NamedParameterJdbcTemplate, adlandırılmış parametreleri kullanmanıza olanak veren bir kolaylıktır. Gerçekten merak ediyorsanız, indirme için hazır olan kaynak koduna bakın. Kaynak kodunu okurken forumlarda aldığım cevaplara daha fazla güvenmemi sağlıyorum.

53

JdbcTemplate kullandığınızda, SQL'e her bir parametre için ? yer tutucusuna sahip SQL verilir. kodda parametreleri atadığınızda Bir dizide bir argüman geçmek zorunda ve onlar bu gibi dizide göründükleri sırayla alışması:

Object[] args = new Object[] {"x", "y"}; 
String sql = "select * from foo where a = ? and b = ?"; 
jdbcTemplate.query(sql, args, resultSetExtractor); 

böylece koþulur SQL select * from foo where a = 'x' and b = 'y' olduğunu.

NamedParameterJdbcTemplate, parametre yer tutucularına adlar atamanıza ve şablonun harita adlarını yer tutucularla eşleştirebilmesi için bir haritaya aktarmanıza olanak tanır. gibi Yani kod görünecektir:

String sql = "select * from foo where a = :mya and b = :myb"; 
Map<String, Object> argMap = new HashMap<String, Object>(); 
argMap.put("mya", "x"); 
argMap.put("myb", "y"); 
namedParameterJdbcTemplate.query(sql, argMap, resultSetExtractor); 

ilk örnekle aynı SQL üreten (zaman yoğun bir parçasıdır ve sorguyu çalıştıran, argüman ekleme performansı olmayan bir konudur.).

Fikir, argümanların isimle eşleştirilmesinin, belirli bir sırada onları belirtmek zorunda kalmadan daha az hataya eğilimli olmasıdır. Gerçek hayattaki bir uygulamada, SQL genellikle DAO kodundan ayrı bir dosyada saklanır ve yanlışlıkla parametreleri yanlış sıraya göre almak kolay olabilir.

+0

Başka herhangi bir fark ??? – Sarma

+3

@Sarma: Bu çok özel bir soru değil. Daha fazla bilgi isterseniz kaynak kodunu kontrol edebilirsiniz. –

+0

hem NamedParameterJdbcTemplate hem de JdbcTemplate aynı veri kaynağı ile kullanmak mümkün mü? Birbirlerine müdahale edecekler mi? – MaxG

İlgili konular