返学费网 > 培训机构 > 全国IT培训中心

13081913316

全国统一学习专线 8:30-21:00

java中数据源和连接池是什么?现在还用得上么?

我知道的是打个比方
数据源就像是移动的客服的接线人员,连接池就是一个容器,打电话进来,从里面给你分配一个连接,系统给你一个名额,,使用完成释放,其他的打进来的再用,现在不少的项目还用的上.

Java开发常用的几个数据库连接池

数据库连接池的好处是不言而喻的,现在大部分的
server都提供自己的数据库连接池方案,此时,只要按照 server的文档说明,正确配置,即可在应用中享受到数据库连接池的好处。
但是,有些时候,我们的应用是个独立的java
,并不是普通的WEB/J2EE应用,而且是单独运行的,不要什么
server的配合,这种情况下,我们就需要建立自己的数据库连接池方案了。
1、 DBCP
DBCP是Apache的一个开源项目:
commons.dbcp
DBCP依赖Apache的另外2个开源项目
commons.和commons.pool
dbcp包,目前版本是1.2.1:
code的方式来简单介绍,所有需要我们自己写的代码很少,只要建立一个文件如下:
import
org.apache.commons.dbcp.;
import
org.apache.commons.dbcp.;
import
java.sql.;
import java.sql.;
import
java.util.;
public class {
private static =
null;
public () {
}
public static void init() {
if ( != null) {
try
{
.close();
} catch (Exception e)
{
}
= null;
}
try {
p = new
();

p.("",
"oracle.jdbc.driver.");
p.("url",
"jdbc:oracle:thin:@192.168.0.1:1521:testDB");

p.("password", "scott");
p.("username",
"tiger");
p.("maxActive", "30");

p.("maxIdle", "10");
p.("maxWait",
"1000");
p.("",
"false");
p.("",
"120");
p.("", "true");

p.("", "true");
= ()
.(p);
} catch (Exception e) {
}
}
public static
() throws {
if ( == null) {

init();
}
conn = null;
if ( != null) {

conn = .();
}
return conn;
}
}
接下来,在我们的应用中,只要简单地使用.()就可以取得连接池中的数据库连接,享受数据库连接带给我们的好处了。当我们使用完取得的数据库连接后,只要简单地使用.close()就可把此连接返回到连接池中,至于为什么不是直接关闭此连接,而是返回给连接池,这是因为dbcp使用委派模型来实现接口了。
在使用来创建时,有很多参数可以设置,比较重要的还有:
、、,他们的意思是当是取得连接、返回连接或连接空闲时是否进行有效性验证(即是否还和数据库连通的),默认都为false。所以当数据库连接因为某种原因断掉后,再从连接池中取得的连接,实际上可能是无效的连接了,所以,为了确保取得的连接是有效的,
可以把把这些属性设为true。当进行校验时,需要另一个参数:,对oracle来说,可以是:SELECT COUNT(*) FROM
DUAL,实际上就是个简单的SQL语句,验证时,就是把这个SQL语句在数据库上跑一下而已,如果连接正常的,当然就有结果返回了。
还有2个参数: 和

他们两个配合,可以持续更新连接池中的连接对象,当
大于0时,每过
时间,就会启动一个线程,校验连接池中闲置时间超过的连接对象。
还有其他的一些参数,可以参考源代码。
2、
C3P0:
C3P0是一个开放源代码的JDBC连接池,C3PO
连接池是一个优秀的连接池,推荐使用。C3PO实现了JDBC3.0规范的部分功能,因而性能更加突出,包括了实现jdbc3和jdbc2扩展规范说明的 和Statement 池的 对象。
下载地址:
com.systex.utils.web;
import java.beans.;
import
java.sql.;
import java.sql.;
import
javax.sql.;
import
com.mchange.v2.c3p0.;
public class {
private static
= null;
private static final String driver
= "com.mysql.jdbc.Driver";
private static final String url =
"jdbc:mysql://localhost:3306/wyd";
private static final String userName =
"root";
private static final String password = "root";
public static () {
if
( == null) {
= new ();
try
{
.(driver);
} catch (
e) {
System.out.println(" Load Driver
Exception!!");
e.();
}
.(url);
.setUser(userName);
.(password);
//
设置连接池最大连接容量
.(20);
//
设置连接池最小连接容量
.(2);
//
设置连接池最大对象容量
.(100);
}
return
;
}
public static () throws
{
return
.().();
}
}
3、 Proxool
这是一个Java SQL
Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。
官方网站: 能详细介绍一下么两个都是开源数据库连接池框架, JDBC连接你应该知道.
连接池是为了避免过多的开启数据库链接导致的资源消耗,由连接池在系统创建初始创建一定数量的数据库连接放到连接池中,这些连接的数量是由最小数据库连接数来设定的,
无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。其实就是为了节约资源
数据库框架hibernate就都支持这两个连接池

java的3种数据库连接池用哪个好?

1
dbcp
dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。
这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性
有所下降,此外不提供连接池监控
2
c3p0
c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
这个连接池的配置参见附件压缩包中的:c3p0.xml。
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,
此外不提供连接池监控。
3
proxool
proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
这个连接池的配置参见附件压缩包中的:proxool.xml。
使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性有一定问题,有一个需要长时间跑批的任务场景任务,同样的代码

java中数据库连接池框架c3p0和dbcp的区别

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
DBCP(DataBase pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。
c3p0与dbcp区别:
dbcp没有自动的去回收空闲连接的功能 c3p0有自动回收空闲连接功能
两者主要是对数据连接的处理方式不同!C3P0提供最大空闲时间,DBCP提供最大连接数。
前者当连接超过最大空闲连接时间时,当前连接就会被断掉。DBCP当连接数超过最大连接数时,所有连接都会被断开。

在spring开发中,c3p0.jar是什么东西,有什么作用,跟我们数据库驱动sqljdbc4.jar有什么不同

c3p0 就是一个 数据库连接池 ,利用 sqljdbc4 建立与数据库的连接 , 并且管理这些连接,不用每次访问数据库都 重新发出数据库连接请求,只需要在c3p0的连接池中拿一个过来就 可以了,这样可以大大的提高性能。

JNDI DBCP C3P0 JDBC ODBC 关系与区别 通俗易懂!

常用的数据库连接池有以下几种:
1.基于JNDI 、C3P0 、DBCP技术的数据连接池
(1)JNDI(Java Naming and Directory Interface ):是SUN公司提供的一种标准的Java命名系统接口,是一组在Java应用中访问命名和目录服务的API。命名服务是将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,它提供了应用编程接口(
interface,API)和服务提供者接口(service provider interface,SPI)。这一点的真正含义是,要让应用与命名服务或目录服务交互,必须有这个服务的JNDI服务提供者,这正是JNDI
SPI发挥作用的地方。服务提供者基本上是一组类,这些类为各种具体的命名和目录服务实现了JNDI接口—很象JDBC驱动为各种具体的数据库系统实现了JDBC接口一样。作为一个应用开发者,不必操心JNDI
SPI。只需要确认要使用的每一个命名或目录服务都有服务提供者。
(2)C3P0:连接池作者是《星球大战》迷,C3P0就是其中的一个机器人,并且这个名称中包涵 和pool的单词字母。因此叫这个名字。
(3)DBCP(DataBase pool):是 apache 上的一个 java 连接池项目,也是 tomcat
使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar ,common-.jar
(4)JDBC(Java DataBase
)是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层的应用程序编程接口(API),它由Java
语言编写的类和接口组成,旨在让各数据库开发商为Java程序员提供标准的数据库API。 JDBC
API定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等。它允许Java程序员发送SQL指令并处理结果。通过驱动程序管理器,JDBC
API可利用不同的驱动程序连接不同的数据库系统。
(5)ODBC(Open DataBase
)是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API),它以X/Open和
ISO/IEC的调用级接口(CLI)规范为基础,并使用结构化查询语言(SQL)作为其数据库访问语言。 ODBC总体结构有四个组件:
区别和联系:
JDBC与ODBC都是基于X/Open的SQL调用级接口,
JDBC的设计在思想上沿袭了ODBC,同时在其主要抽象和SQL
CLI实现上也沿袭了ODBC,这使得JDBC容易被接受。JDBC的总体结构类似于ODBC,也有四个组件:应用程序、驱动程序管理器、驱动程序和数据源。
JDBC保持了ODBC的基本特性,也独立于特定数据库。

做Java开发的时候,是不是三大框架和设计模式用的特别频繁啊?

JAVA编程中使用到的MVC三层结构较多,常见的有SSH(Spring + Struts +Hibernate)框架。设计模式一般用的不是太多,常见的有工厂模式(Factory )、单太模式(Singleton)、适配器(Adapter)等。并不是所有的项目使用设计模式都好,要看项目的规模,还有使用的必要性,因为在使用某些设计模式时,会在一定的程度上会消耗资源。给你个Java设计模式的PDF文档: tomcat-dbcp.jar,但是如果用其他连接池就需要加jar包;
1.jndi是 Java 命名与目录接口(Java Naming and Directory Interface);
你在配置数据源时,实在xml中配置的;直接使用字符信息获取连接这种方式叫JNDI;
例如:
Context ctx=new (); Object =ctx.lookup("java:数据源名称"); //引用数据源 ds=(); conn=ds.();
2.c3p0是一个数据库连接池,数据库连接池主要是控制最大连接数、最小连接数等等连接信息

JAVA找工作应该掌握什么技术???

xml熟悉、 uml熟悉 、 jQuery (一种JS框架,是yahoo开发的)
还要懂 oracle \mysql \sql server 中的一两种、 全懂更好。
现有这些就差不多了。
然后再了解 一下 c3p0 、 jndi 、dhcp 、
tomcat \ jboss \ weblogic 等 。
祝你成功!

温馨提示:为不影响您的学业,来校区前请先电话咨询,方便我校安排相关的专业老师为您解答
  • 热门课程
  • 作者最新文章
  • 在线报名
申请试听课程

只要一个电话
我们免费为您回电

姓名不能为空
手机号格式错误