プレーンな JDBC 接続内で SQL クエリを実行するために繰り返し使用されるメソッドのステートレス セッション Bean があります。接続を頻繁に開いたり閉じたりする必要がないように、私は次のアプローチを思いつき、それが良い習慣であるかどうか疑問に思いました。
@PostConstruct アノテーションが付けられたメソッドで接続を 1 回開き、@PreDestroy アノテーションが付けられた別のメソッドで接続を閉じます。
コードは問題なく動作し、明らかなメモリ リークや私が知っている問題はありません。より経験豊富な開発者が、それが適切な方法であるかどうかに同意するかどうか疑問に思っています。
@PostConstruct
public void initBean() {
try {
conn = Connector.getConnection();
} catch (Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
}
}
public String runTheQuery(String sql) {
String result ="";
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
result = rs.getString(1);
rs.close();
pstmt.close();
} catch (SQLException se) {
// Handle errors for JDBC
}
return result;
}
@PreDestroy
public void endingTitles() {
System.out.println("Closing the JDBC connection...");
try {
rs.close();
conn.close();
pstmt.close();
} catch (SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if (pstmt != null)
pstmt.close();
} catch (SQLException se2) {
}// nothing we can do
try {
if (conn != null)
conn.close();
} catch (SQLException se) {
se.printStackTrace();
}// end finally try
}// end try
}