mab*_*zer 5 java mysql database tomcat connection-pooling
哪一个是使用的更好的方法MySQL中Tomcat:
A)只要它的会话有效分配的用户数据库连接.[OR]
B)打开与DB的连接,每次请求都会到达服务器,当它关闭时.
C)连接池.[最佳答案]
在任何类型的请求 - 回复系统中 - 无论是http,ftp还是数据库调用 - 保持一个连接池可供客户端使用是有意义的.在每个请求期间构建和拆除连接的成本很高(对于客户端和服务器而言都是如此),因此拥有一个池,多个线程可以从中"检出"连接以供其使用,这是一个很好的模式.
该JDBC API提供各地的任何数量的数据库实现的包装,这意味着为他们叫什么样的数据库的调用者可以(主要)无关.这种抽象允许编码人员创建通用库,为任何类型的JDBC连接提供连接池.
由于调用者可能只使用JDBC方法,checkout因此看起来像创建连接的请求,而checkin只是关闭连接的调用者,即调用者不知道他们正在使用连接池,因为语义与使用它无法区分.单一连接创建/拆除解决方案.这是件好事; 这是真正的OO.
那么有哪些库可以使这更容易?
c3p0 - 以每个人最喜欢的协议droid命名,这个库提供连接池和准备好的语句池(我相信这是一个对象的对象池PreparedStatement).
他们网站上的文档非常详尽.我实际上已经在我的桌子上打印了一份物理副本,因为我在调整时需要查阅它.所有配置都以JavaBeans样式完成,这使得使用它变得轻而易举.
它被广泛部署并在压力下站起来.我已经用它来做几十甚至几十万个每秒事务,多台机器和每台机器多个线程连接到多个数据库.
他们似乎有一个专门关于配置c3p0供Tomcat使用的附录,所以你可能希望检查一下.
DBCP - 名称较少的Apache DBCP(用于"数据库连接池")与c3p0完全相同.这个讨论似乎不鼓励它的使用,认为c3p0更积极地维护.我真的不记得为什么我选择c3p0而不是DBCP用于我的上一个项目(可能熟悉),但是如果你想让DBCP看一下,那就继续吧.
以下是有关DBCP的一些Stack Overflow问题:
我不想成为负面的南希,但我不认为DBCP是你想要的.
BoneCP - 也许创造性地命名,但听起来有点怪异.我从来没用过它.作者说它真的很快,他可能是对的.这似乎是最不成熟的 - 至少在时间上 - 你的所有选择,但你应该试一试,看看它是否符合你的需要.
您将自己包装DataSource在类似其他类的代理中,因此可能无法访问特定于供应商的方法.这不是什么大问题:你不应该编写特定于供应商的数据库代码.
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |