2009-07-30 15 views
5

Spring Framework'ün iki benzer sınıfı vardır: JdbcTemplate eski, Java 1.4 sınıfı ve SimpleJdbcTemplate daha yeni yöntemlerle daha yenidir.QueryTimeout'u SimpleJdbcTemplate'de nasıl ayarlayabilirim?

JdbcTemplate, temel olarak, temeldeki Statement nesnesinde aynı ada sahip bir yönteme erişim sağlayan bir yöntem olan setQueryTimeout yöntemine sahiptir.

SimpleJdbcTemplate ile benzer bir şey yapmak için herhangi bir yolu var mı?

Çözüm: skaffman cevabı dayanarak, şimdi ben ne istersem yapabilirim, SimpleJdbcTemplate bir JdbcTemplate kendimi nesne oluşturun. Kod:

JdbcTemplate jdbcTemplate = this.getJdbcTemplate(); 
jdbcTemplate.setQueryTimeout(30); 
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate); 

Bir ağız dolusu biraz, ama işi bitirir.

Güncelleştirme: Bu gerçekten gerekli olandan daha karmaşıktır. Cevabı gör.

+0

Gerektiğinden daha karmaşık bir şekilde, benim düzenlenmiş cevabım bakın. – skaffman

+0

Sorgu zaman aşımı birimi nedir? – akirekadu

+0

@akirekadu - saniye. – itsadok

cevap

4

SimpleJdbcTemplat e, JdbcTemplate için bir yedek değildir, yalnızca java5 dostu ek, varargs ve generics'ten en iyi şekilde yararlanan belirli işlemler için. Eğer SimpleJdbcTemplate için kaynak bakarsak

, bunu delege JdbcTemplate nesneye çalışmalarının tüm ve böylece JdbcTemplate üzerinde zaman aşımı (veya diğer seçenekleri) belirleyerek, örtülü bunları ayarlamak olduğunu göreceksiniz SimpleJdbcTemplate da.

SimpleJdbcTemplate'u SimpleJdbcDaoSupport.getSimpleJdbcTemplate() aracılığıyla alıyorsanız, JdbcTemplate zaten doğru şekilde bağlanmış olacaktır.

düzenleme: Örneğin

: getJdbcTemplate tarafından alınır olarak SimpleJdbcTemplate aynı JdbcTemplate içerir

public class MyDao extends SimpleJdbcDaoSupport { 
    public void doStuff() { 
     getJdbcTemplate().setQueryTimeout(x); 
     getSimpleJdbcTemplate().execute(...); 
    } 
} 

().

SimpleJdbcDaoSupport'u genişletmezseniz, evet, bir SimpleJdbcTemplate öğesini elle oluşturmanız gerekir.

+0

Ama JdbcTemplate'e SimpleJdbcTemplate içinde "kapana kısılmış" olanlara nasıl erişirim? Tek sahip olduğum setTimeout'a sahip olmayan bir JdbcOperations arayüzüne erişim. Bazı kodları göstermek ister misiniz? – itsadok

+0

Sorunuzda, SimpleJdbcTemplate hakkında sorular sormadınız. Gerçekten ne istediğini açıklığa kavuşturmak için lütfen sorunuzu değiştirin. – skaffman

+0

Hayır, yorumum açık değildi. Ben bir SimpleJdbcTemplate nesnesine sahip olduğumu, sahip olduğum tek şey getJdbcOperations() 'yöntemidir. GetUnderlyingJdbcTemplate() 'yöntemi yoktur. – itsadok

İlgili konular