ठीक है, मुझे एहसास हुआ है कि मैंने वास्तव में समुदाय में योगदान किए बिना बहुत सारे प्रश्न पूछे हैं, लेकिन मुझे आपकी राय चाहिए। कहें कि मेरे पासएक कनेक्शन के साथ दो जावा प्रीपेडस्टेटमेंट्स को निष्पादित करना - शैली विकल्प
private void closeAll(ResultSet rs, PreparedStatement ps, Connection con) {
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
}
if (ps != null)
try {
ps.close();
} catch (SQLException e) {
}
if (con != null)
try {
con.close();
} catch (SQLException e) {
}
}
और मैं एक कनेक्शन का उपयोग करके अपने MySQL डेटाबेस पर कई संचालन करना चाहता था। यह बेहतर
Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, null);
}
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, con);
}
या
Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
rs.close();
ps.close();
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, con);
}
मैं या तो, सुरक्षित साफ, अधिक संक्षिप्त, या और अधिक मजबूत मतलब करने के लिए बेहतर करने पर विचार लिखने के लिए है। मुझे यकीन नहीं है कि उत्तरार्द्ध हमेशा जो भी तैयार बयान बंद कर देगा और जब भी यह अपवाद का सामना करता है तो परिणाम सेट खुले होते हैं, जबकि मेरा मानना है कि यह अधिक संक्षेप में दिखता है। लेकिन पूर्व अच्छा दिखता है क्योंकि यह अधिक सुसंगत है, फिर भी यह अधिक ओवरहेड डालता है क्योंकि यह अंत में ब्लॉक का अधिक प्रयास करता है।
मुझे एहसास है कि परियोजना सिक्का का जावा 7 का स्वचालित संसाधन प्रबंधन हिस्सा मुझे पूर्व में दुबला करने के लिए मजबूर करेगा क्योंकि हेडर में उपयोग किए जाने वाले संसाधन शरीर में पूरी तरह से अंतिम हैं। हालांकि, मेरे पास एआरएम को अनुकूलित करने के लिए मेरे कोड को संशोधित करने और बॉयलरप्लेट कोड को हटाने में सक्षम होने से पहले मुझे कुछ समय पहले चिंता करने की ज़रूरत है, इसलिए सवाल अभी भी खड़ा है: उपरोक्त दो शैलियों में से कौन सा बेहतर अभ्यास होगा? यदि वे दोनों अपेक्षित व्यवहार करते हैं, तो क्या बाद में मुझे एक उल्लेखनीय प्रदर्शन बढ़ावा मिलेगा जो "उलझन" शैली को क्षमा करेगा?
आपका उत्तर प्रश्न के लिए अप्रासंगिक है – MozenRath