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

  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • LearnCode.academy

    LearnCode.ac

    20 Aralık 2012
  • Liz Morgan

    Liz Morgan

    4 Aralık 2011