gpt4 book ai didi

java - 5 个不同的查询与 5 个 JDBC 连接或 5 个不同的查询与 1 个 JDBC 连接。哪个好?

转载 作者:行者123 更新时间:2023-12-01 07:28:23 26 4
gpt4 key购买 nike

我想了解 JDBC 连接使用与性能的关系。

例如我想从数据库中获取 5 个不同的对象,并有 5 个不同的选择查询来获取。

我必须选择实现这一目标。您还可以告诉我其他方法。

我目前正在使用的第一个

void fetchSeventObjectMethod(long id1,long id2,.....,long id5) {

1. Open JDBC Connection

2. PrepareStatment 1
2.1 Object 1 Fetch Query
2.1 Bind Object 1 from ResultSet 1
2.1 **Close** PrepareStatment 1 and ResultSet 1

3. PrepareStatment 2
2.1 Object 2 Fetch Query
2.1 Bind Object 2 from ResultSet 2
2.1 Close PrepareStatment 2 and ResultSet 2

4. PrepareStatment 3
2.1 Object 3 Fetch Query
2.1 Bind Object 3 from ResultSet 3
2.1 Close PrepareStatment 3 and ResultSet 3

5. PrepareStatment 4
2.1 Object 4 Fetch Query
2.1 Bind Object 4 from ResultSet 4
2.1 Close PrepareStatment 4 and ResultSet 4

6. PrepareStatment 5
2.1 Object 5 Fetch Query
2.1 Bind Object 5 from ResultSet 5
2.1 Close PrepareStatment 5 and ResultSet 5

7. Close JDBC Connection in FINAL BLOCK

}

另一个是

 void fetchSeventObjectMethod(long id1,long id2,.....,long id5) {    
call fetchObjectOneMethod(id1);
call fetchObjectTwoMethod(id2);
call fetchObjectTHreeMethod(id3);
call fetchObjectFourMethod(id4);
call fetchObjectFiveMethod(id5);
}

void fetchObjectOneMethod(long id1) {
1. Open JDBC Connection
2. PrepareStatment 1
2.1 Object 1 Fetch Query
2.1 Bind Object 1 from ResultSet 1
2.1 **Close** PrepareStatment 1 and ResultSet
3. Close JDBC Connection in FINAL BLOCK
}

void fetchObjectTwoMethod(long id2) {
1. Open JDBC Connection
2. PrepareStatment 1
2.1 Object 1 Fetch Query
2.1 Bind Object 1 from ResultSet 1
2.1 **Close** PrepareStatment 1 and ResultSet 1
3. Close JDBC Connection in FINAL BLOCK
}

void fetchObjectTHreeMethod(long id3) {
1. Open JDBC Connection
2. PrepareStatment 1
2.1 Object 1 Fetch Query
2.1 Bind Object 1 from ResultSet 1
2.1 **Close** PrepareStatment 1 and ResultSet 1
3. Close JDBC Connection in FINAL BLOCK
}

这里的场景是 void fetchSeventObjectMethod(....) 由多个线程调用,最多可达数千个或更多。

如果第一个仅使用单个连接如果使用第二个五个连接

在性能考虑上哪个是更好的选择,或者是否有替代方法。这里我也使用c3p0连接池。请帮助我。

谢谢

最佳答案

JDBC Connection是重资源对象,opencloseIO而言,这是一件代价高昂的事情(至少)。

您可以管理的连接对象越少越好。

但就你而言1000 + 并发调用,必须考虑使用Connection-Pool用你的方法-1。方法 2+连接池同样可以使用,但与方法 1 相比,会产生额外的池管理成本。

关于java - 5 个不同的查询与 5 个 JDBC 连接或 5 个不同的查询与 1 个 JDBC 连接。哪个好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20780990/

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