首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用java、单例连接对象还是spring连接的jdbc连接?

用java、单例连接对象还是spring连接的jdbc连接?
EN

Stack Overflow用户
提问于 2011-06-07 13:13:17
回答 3查看 2.9K关注 0票数 2

我正在使用java操作postgresql数据库。请帮助我选择一个开发实践。

我必须:

  • 创建一个jdbc单例对象?
  • 为每个请求创建一个新的连接?
  • 还是使用jdbc作为spring框架?

哪一种是最佳做法?

EN

回答 3

Stack Overflow用户

发布于 2011-06-07 13:26:33

对一个模糊问题的模糊回答:

而是管理您的JDBC连接。如果打开的连接太多,则必须维护它们,并确保它们已关闭,以便其他连接访问数据库(您可以有一个异常,说明“打开的文件太多”)。连接池维护连接。每个请求有一个连接,一旦完成,就返回到池。

我会这么做:

  • 连接池中维护我的JDBC连接(谢谢吉加尔·乔希)。
  • 从连接池请求连接并在我的DAO中使用它( DAO是我的对象对DB的CRUD )。
  • 连接完成后,将连接返回到connection。

如果使用Spring,请使用Spring模板

票数 5
EN

Stack Overflow用户

发布于 2011-06-07 13:19:06

在哪里可以找到好的说明或教程,说明如何将JDBC连接池连接到我的客户机上的Postgres数据库?

http://www.mchange.com/projects/c3p0/index.html

c3p0被设计成使用起来很简单。只需将jar文件lib/c3p0-0.9.0.jar放在应用程序的有效CLASSPATH中,并生成如下DataSource:

代码语言:javascript
运行
复制
import com.mchange.v2.c3p0.*;

...

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver            
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );
cpds.setUser("dbuser");                                  
cpds.setPassword("dbpassword");    

如果要打开PreparedStatement池,还必须设置maxStatements和/或maxStatementsPerConnection(两者都默认为0):

代码语言:javascript
运行
复制
cpds.setMaxStatements( 180 ); 

对您的DataSource做您想做的任何事情,它将由一个带有默认参数的连接池来支持。您可以将DataSource绑定到JNDI服务,或者根据您的喜好直接使用它。完成之后,您可以像这样清理您创建的DataSource:

代码语言:javascript
运行
复制
DataSources.destroy( cpds );

就这样!其余的都是细节。

票数 2
EN

Stack Overflow用户

发布于 2011-06-07 13:15:59

维护单个连接,甚至更好地使用连接池

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6265720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档