Java JDBC效率:连接应该保持多长时间?

🏷️ det365手机版 📅 2025-07-31 02:50:29 ✍️ admin 👀 3909 ❤️ 172
Java JDBC效率:连接应该保持多长时间?

我仍在解决之前提到的问题,详情请参考这里。特别是在创建下面所示的AbstractModel类之后,它似乎工作得很好:

public abstract class AbstractModel {

protected static Connection myConnection = SingletonConnection.instance().establishConnection();

protected static Statement stmt;

protected static ResultSet rs;

protected boolean loginCheck; // if userId and userLoginHistoryId are valid - true, else false

protected boolean userLoggedIn; // if user is already logged in - true, else false

public AbstractModel (int userId, Long userLoginHistoryId){

createConnection(); // establish connection

loginCheck = false;

userLoggedIn = false;

if (userId == 0 && userLoginHistoryId == 0){ // special case for login

loginCheck = true; // 0, 0, false, false

userLoggedIn = false; // set loginCheck to true, userLogged in to false

} else {

userLoggedIn = true;

try{

String query = "select \"user_login_session_check\"(" + userId + ", " + userLoginHistoryId + ");";

System.out.println("query: " + query);

stmt = myConnection.createStatement();

rs = stmt.executeQuery(query);

while (rs.next()){

loginCheck = rs.getBoolean(1);

}

} catch (SQLException e){

System.out.println("SQL Exception: ");

e.printStackTrace();

}

}

}

// close connection

public void closeConnection(){

try{

myConnection.close();

} catch (SQLException e){

System.out.println("SQL Exception: ");

e.printStackTrace();

}

}

// establish connection

public void createConnection(){

myConnection = SingletonConnection.instance().establishConnection();

}

// login session check

public boolean expiredLoginCheck (){

if (loginCheck == false && userLoggedIn == true){

closeConnection();

return false;

} else {

return true;

}

}

}

我已经在之前的问题链接中发布了存储过程和Singleton模式实现。

我的理解是,在每个单独的数据交易后,我不需要关闭与数据库的连接,因为这样只会使应用程序变慢。我正在构建的系统大约有30个用户,因此性能和可用性非常重要。

将连接延长至少3-4个数据交易是否正确?例如,对于某些表单的验证检查或类似于Google自动建议的内容...这些都是基于用户输入的单独存储函数调用。我可以使用一个连接实例,而不是在每个数据交易后进行连接和断开连接吗?哪种更有效率?

如果我的假设是正确的(使用一个连接实例更有效率),那么打开和关闭连接应该由控制器处理,这就是我创建createConnection()和closeConnection()方法的原因。

谢谢。

🎯 相关推荐

战狼2结局是什么意思?
det365手机版

战狼2结局是什么意思?

📅 07-23 👀 3856
价格专题
365bet现金信誉网

价格专题

📅 07-25 👀 9220
十大良心捕鱼游戏排行榜
det365手机版

十大良心捕鱼游戏排行榜

📅 06-30 👀 7127