gpt4 book ai didi

java - 在 Web 应用程序中管理数据库连接的最佳实践

转载 作者:可可西里 更新时间:2023-11-01 09:37:46 24 4
gpt4 key购买 nike

我正在使用 Java 开发 MongoDB 应用程序,但我认为这个问题通常与 Web 应用程序的数据存储连接有关。

我喜欢用四个顶级包来构建所有网络应用程序,这些包被称为(我认为这将是不言自明的):

  • 控制者
  • 模型
  • 利用

理想情况下,我希望在 Dao 包中有一个类来处理所有连接细节。

到目前为止,我已经创建了一个如下所示的类:

public class Dao {

public static Mongo mongo;
public static DB database;

public static DB getDB() throws UnknownHostException, MongoException{
mongo = new Mongo("localhost");
database = mongo.getDB("mydb");
return database;
}

public static void closeMongo(){
mongo.close();
}
}

我在我的代码中使用类似这样的东西

public static void someMethod(String someData){
try {
DB db = Dao.getDB();
DBCollection rColl = db.getCollection("mycollection");
// perform some database operations
Dao.closeMongo();

} catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace();
}
}

这似乎工作正常,但我很想知道人们认为什么是处理这个问题的“最佳”方法,如果有的话。

最佳答案

连接到关系数据库服务器时的经验法则是有一个池。例如,如果您使用池连接到 oracle 数据库,则可以在连接设置时间和 sql 解析时间(如果您使用绑定(bind)变量)方面为您带来一些性能优势。其他关系数据库可能会有所不同,但我认为池是一个很好的模式,即使出于某些其他原因(例如,您可能希望限制与数据库用户的最大连接数)。您正在使用 MongoDB,因此首先要检查的是 MongoDB 如何处理连接、创建连接的成本如何等等。我建议使用/构建一个可以实现池逻辑的类,因为它为您提供了将来可能需要的灵 active 。查看您的代码似乎是 api

DB db=Dao.getDB();

应该搭配:

Dao.closeDB(DB db);

所以你有机会真正关闭连接或者重用它而不影响 Dao 代码。使用这两种方法可以切换您管理连接的方式而无需重新编码 Dao 对象

关于java - 在 Web 应用程序中管理数据库连接的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com