JDBC--学习笔记(三)数据源与连接池
来源:互联网 发布:智能语音助手软件 编辑:程序博客网 时间:2024/05/16 05:14
================数据源和连接池==============
数据源是在JDBC 2.0中引入的一个概念。JDBC扩展包中定义了javax.sql.DataSource接口,它负责建立与数据库的连接。
在应用程序中访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接。
在DataSource中事先建立了多个数据库连接,这些数据库连接保存在连接池(Connection Pool)中,Java程序访问数据库时,
只需从连接池中取出空闲状态的数据库连接,当程序访问数据库结束时,再将数据库连接返回给连接池,这样做可以提高访问
数据库的效率。
总之,数据源(DataSource)的作用是获取数据库连接,而连接池则是对已经创建好的连接对象进行管理,二者的作用不同。
数据源的配置:
1.在Tomcat服务器中添加数据库驱动(将数据库jar包文件复制到Tomcar安装目录下的lib文件夹中);
2.配置Tomcat服务器的配置文件:
在Tomcat服务器的conf/context.xml文件中添加配置信息:
--MySQL数据库配置与Oracle的配置有差异:--
-------MySQL---------
<Resource name="jdbc/demo1" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="100" maxWait="10000" username="root" password="aptech"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/项目使用的数据库名?useUnicode=true&characterEncoding=UTF-8" />
-------Oracle--------
<Resource name="jdbc/demo2" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="scott" password="tiger"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl" />
Resource元素属性说明:
name:指定Resource的JNDI名称
auth:指定管理Resource的Manager(Container由容器创建和管理,Application由Web应用创建和管理)
type:指定Resource所属的Java类,javax.sql.DataSource有一组特性可以用于确定和描述它所表示的现实
存在的数据源。
maxActive:指定连接池中处于活动状态的数据库连接的最大数量
maxIdle:指定连接池中处于空闲状态的数据库连接的最大数量
maxWait:指定连接池中连接处于空闲的最长时间,超过这个时间会提示异常,取值为-1,表示可以无限制
等待,单位为毫秒。
username:数据库用户名
password:数据库密码
url:数据库的url
----------使用JNDI读取数据源-------
JNDI:Java Naming and Directory Interface,Java命名与目录接口
是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口。
可简单理解为一种将对象和名字绑定的技术,即指定一个资源名称,将该名称与某一资源或服务相关联。
由于数据源由Tomcat容器创建的,因此需要使用JNDI来获取数据源。
获取数据源时,javax.naming.Context提供了查找JNDI Resource的接口,通过该对象的lookup()方法,就可以
找到之前创建好的数据源。
----获取数据源的程序:以上面的MySql为例(name为demo1)-----
Connection conn = null;
try{
//初始化上下文
Context cxt = new InitialContext();
//获取与逻辑名相关联的数据源对象
DataSource ds = (DataSource)cxt.lookup("java:comp/env/jdbc/demo1")
conn = ds.getConnection();
}catch(NamingException e){
e.printStackTrace;
}catch(SQLException e){
e.printStackTrace;
}
数据源是在JDBC 2.0中引入的一个概念。JDBC扩展包中定义了javax.sql.DataSource接口,它负责建立与数据库的连接。
在应用程序中访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接。
在DataSource中事先建立了多个数据库连接,这些数据库连接保存在连接池(Connection Pool)中,Java程序访问数据库时,
只需从连接池中取出空闲状态的数据库连接,当程序访问数据库结束时,再将数据库连接返回给连接池,这样做可以提高访问
数据库的效率。
总之,数据源(DataSource)的作用是获取数据库连接,而连接池则是对已经创建好的连接对象进行管理,二者的作用不同。
数据源的配置:
1.在Tomcat服务器中添加数据库驱动(将数据库jar包文件复制到Tomcar安装目录下的lib文件夹中);
2.配置Tomcat服务器的配置文件:
在Tomcat服务器的conf/context.xml文件中添加配置信息:
--MySQL数据库配置与Oracle的配置有差异:--
-------MySQL---------
<Resource name="jdbc/demo1" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="100" maxWait="10000" username="root" password="aptech"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/项目使用的数据库名?useUnicode=true&characterEncoding=UTF-8" />
-------Oracle--------
<Resource name="jdbc/demo2" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="scott" password="tiger"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl" />
Resource元素属性说明:
name:指定Resource的JNDI名称
auth:指定管理Resource的Manager(Container由容器创建和管理,Application由Web应用创建和管理)
type:指定Resource所属的Java类,javax.sql.DataSource有一组特性可以用于确定和描述它所表示的现实
存在的数据源。
maxActive:指定连接池中处于活动状态的数据库连接的最大数量
maxIdle:指定连接池中处于空闲状态的数据库连接的最大数量
maxWait:指定连接池中连接处于空闲的最长时间,超过这个时间会提示异常,取值为-1,表示可以无限制
等待,单位为毫秒。
username:数据库用户名
password:数据库密码
url:数据库的url
----------使用JNDI读取数据源-------
JNDI:Java Naming and Directory Interface,Java命名与目录接口
是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口。
可简单理解为一种将对象和名字绑定的技术,即指定一个资源名称,将该名称与某一资源或服务相关联。
由于数据源由Tomcat容器创建的,因此需要使用JNDI来获取数据源。
获取数据源时,javax.naming.Context提供了查找JNDI Resource的接口,通过该对象的lookup()方法,就可以
找到之前创建好的数据源。
----获取数据源的程序:以上面的MySql为例(name为demo1)-----
Connection conn = null;
try{
//初始化上下文
Context cxt = new InitialContext();
//获取与逻辑名相关联的数据源对象
DataSource ds = (DataSource)cxt.lookup("java:comp/env/jdbc/demo1")
conn = ds.getConnection();
}catch(NamingException e){
e.printStackTrace;
}catch(SQLException e){
e.printStackTrace;
}
0 0
- JDBC--学习笔记(三)数据源与连接池
- JDBC连接池与数据源学习总结
- 【数据库学习笔记】(4)JDBC数据源和连接池
- JDBC 学习笔记(三)—— 数据源(数据库连接池):DBCP数据源、C3P0 数据源以及自定义数据源技术
- Mybatis学习笔记-数据源与连接池
- jdbc 连接池 and 数据源 笔记
- JDBC学习笔记(二)--数据库连接池 DBCP数据源
- JDBC学习笔记(三):连接Oracle数据库(连接池)
- JDBC高级应用 - 数据源(连接池)
- JDBC编程学习笔记整理(外传1)---数据源与JNDI
- JDBC数据源和连接池
- JDBC 数据源和连接池
- JDBC数据源和连接池
- JDBC数据源和连接池
- JDBC数据源和连接池
- JDBC基础-连接池(数据源)
- JDBC的连接池与数据源的区别及性能
- JDBC的连接池与数据源的区别及性能
- 求职准备415
- 【HTML】简单的公司主页
- MyBatis--查询缓存--增删改对内置二级缓存的影响
- C++中 int转string 方法
- Python基础之--from __future__ import unicode_literals作用
- JDBC--学习笔记(三)数据源与连接池
- 基于tensorflow实现图像风格的变换
- 同余——HDU 4596
- 《论美国的民主》读后感
- Ubuntu+Eclipse+SparkStreaming
- Centos7安装Logstash及基本配置
- muduo库的消息循环机制
- js给KindEditor的textarea框赋值
- HDU 4596 J