SORU
19 EYLÜL 2008, Cuma


Seviyesinde bağımsız kapalı bağlantı kapalı değil mi?

Pet projemiz kod inceleme (çoğunlukla FindBugs gibi araçları kullanarak) yapıyorum ve hatalı olarak işaretlenmiş aşağıdaki kodu (yalancı) FindBugs:

Connection conn = dataSource.getConnection();

try{
    PreparedStatement stmt = conn.prepareStatement();
    //initialize the statement
    stmt.execute();
    ResultSet rs =  stmt.getResultSet();
    //get data
}finally{
    conn.close();
}

Hata bu kod kaynaklarını serbest olmayabilir. Seviyesinde bağımsız ve Deyim sonunda onları kapattım bu kadar kapalı değildi, bunu anladım:

finally{
    try{
        rs.close()
    }catch(SqlException se){
        //log it
    }
    try{
        stmt.close();
    }catch(SqlException se){
        //log it
    }
    conn.close();
}

Ama birçok proje (pek çok şirket) yukarıdaki örüntü ile karşılaştım, ve kimse ResultSets veya Tabloları kapanış oldu.

Bağlantı kapalıyken ResultSets ve İfadeleri ile sorun kapalı değil mi?

this ve sadece Oracle için Bağlantı (Oracle db, benim düzeltmeler dolayısıyla kullanıyoruz) kapatırken ResultSets kapanış ile sorunları ifade eder buldum. java.sql.apı Bağlantısı yok diyor.() yakın javadoc.

CEVAP
19 EYLÜL 2008, Cuma


SADECE bağlantıyı kapatmadan bir sorun ve sonuç kümesi değil, eğer bağlantı yönetimi kodunuzu bağlantı havuzu kullanan, connection.close() sadece bağlantı havuzu geri koymak. Ayrıca, bazı veritabanı açıkça kapalı olduğu sürece düzgün bir şekilde serbest bırakılır. bu sunucu üzerinde İmleci bir kaynak var.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Art Food Kitty - Kelly Eddington

    Art Food Kit

    7 Kasım 2006
  • RD

    RD

    19 NİSAN 2006
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012