我有一个无状态会话 bean,该方法重复用于在普通 JDBC 连接中运行 SQL 查询。为了避免过于频繁地打开和关闭连接,我想出了以下方法,并想知道这是否是一个好习惯:
我在注解为@PostConstruct 的方法中打开连接一次,然后在另一种注解为@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
}