数据源与连接池技术

数据源:是在JDBC 2.0中引入的一个概念。在JDBC 扩展包中定义了javax.sql.DataSource接口,它负责建立与数据库的连接,在应用程序访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接。数据源作为一个不能直接看到它具体存在的东西,它的作用就是获取数据库连接。数据源怎么表示和体现呢?DataSource 接口有一组特性可以用于确定和描述它所表示的现实存在的数据源。我们配置好的数据库连接池也是以数据源的形式存在的。


连接池:在DataSource中事先建立了多个数据库连接,这些数据库连接保存在连接池中。java 程序访问数据库时,只需从连接池中取出空闲状态的数据库连接,当程序访问数据库结束时,再将数据库连接返回给连接池,这样做可以提高访问数据的效率。


数据源的作用是获取数据库连接,连接池是对已近创建好的数据库连接对象进行管理。  连接池里放的是数据库连接对象,数据源是要去获取一个数据库连接,也可以说是去获取一个数据库连接对象,对象代表的就是一个连接嘛。数据源是一个源头、一个路径、一个获取连接的过程。  连接池里放的就是一个一个的连接对象。调用数据源就可以去获得一个连接。

它们是两个概念,工作原理图如下:

  该如何配置数据源呢?

数据源的配置过程是固定模式,总结起来主要三步。

1.在tomcat 服务器中添加匹配的数据库驱动,方法如下

将匹配的驱动  jar包文件(如Oracle 的 ojdbc14.jar) 复制到tomcat 安装目录下的lib 文件夹中。

2.配置tomcat 服务器的配置文件,方法如下:

在tomcat 服务器的conf/context.xml文件中添加如下配置信息。

<Resource name="jdbc/news"

                   auth="Container" type="javax.sql.DataSource" maxActivive="100"

                   maxIDle="30" maxWait="10000" username="scott" password="tiger"

                   driverClassName="pracle.jdbc.OracleDriver"

                   url ="jdbc:oracle:thin:@localhost:1521:news"/>



  name=指定Resource的JNDI名称
  auth=指定管理Resource的Manager(Container由容器创建和管理,Application由Web应用创建和管理)
  type=指定Resource的java类
  maxActive=指定连接池中处于活动状态的数据库连接的最大数量
  maxIdle=指定连接池中处于空闲状态的数据库的最大数量
  maxWait=指定连接池中连接处于空闲的最长时间,超过这个时间会提示异常,取值为-1,表示可以无限期等待,单位为毫秒(ms)

3.配置应用程序的web.xml文件。

该步骤 只在早期的 tomcat版本中需要配置,6及以后的都不需要再配置。


如何读取数据源呢?

使用JNDI (java 命名与目录接口,是一个应用程序设计的API)


通过javax。naming.Cntext 查找JNDI Resource的接口 然后通过该对象的lookkup()方法去获取之前创建好的数据源。

lookup()方法的语法如下;

lookup("java:comp/env/数据源名称")

//java:comp/env/这是Java的语法要求,必须写上。
 //这里的数据源名称就是上面的jdbc/news,这个news是项目名。


下面直接上代码:

public Connection getConnection(){
 
 try {
  //初始化上下文
  Context cxt = new InitialContext();
  //获取与逻辑名相关联的数据源对象
  DataSource ds = (DataSource) cxt.lookup("jdva:comp/env/jdbc/news");
  conn = ds.getConnection();
 } catch (NamingException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }catch (SQLException e) {
  // TODO: handle exception
  e.printStackTrace();
 }
 return conn;
}


读取数据源获取数据库连接时,要确保Tomcat 服务器已近启动,其次读取数据源的代码应运行在Tomcat 中。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值