JDBC 数据源及JNDI

本文深入探讨了数据源与连接池的概念,包括标准连接池的实现方式、增强方法及常用开源数据源DBCP、C3P0的使用方法。同时介绍了数据元数据信息的获取方法,并详细阐述了JNDI技术在数据源配置中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、标准的连接池
实现javax.sql.DataSource接口的类,才称为标准的连接池。又称为数据源
二、要对某个类的某个方法进行增强的方法
1、继承
不可取。
2、利用包装设计模式(装饰设计模式)
1、定义一个类,实现与被增强对象相同的接口
2、定义一个私有变量,引用被增强的对象
3、定义一个构造方法,接收被增强对象,并对第2步的对象赋值
4、对于要增强的方法,编写自己的增强代码
5、对于不需要增强的方法,调用原对象的原方法

可以使用,但是有点麻烦(可能需要实现的并不需要增强的方法很多)
3、动态代理
3.1基于接口的动态代理:JDK Proxy 代理对象和被代理对象拥有共同的行为(也就是说实现了共同的接口)

3.2基于子类的动态代理:CGLIB
三、常用的开源数据源
1、DBCP:Apcahe的产物
单独使用:需要的jar包
commons=dbcp.jar
commons-pool.jar
在类路径中建立一个properties的配置文件,设置连接池的参数(参数可以从BasicDataSourceFactory中找到)
加载这个配置文件,创建BasicDataSourceFactory对象
调用工厂对象createDatasource得到数据源

2、C3P0
需要的jar
c3p0-0.9.1.2.jar
c3p0-0.9.1.2-jdk1.3.jar
c3p0-oracle-thin-extras-0.9.1.2.jar(oracle时使用)
在classes建立一个c3p0-config.xml的配置文件

ComboPooledDataSource ds = new ComboPooledDataSource();
3\JNDI:Java Naming and Directory Interface(Java命名与目录服务接口)
一个名字绑定一个对象
利用TOmcat来管理数据源的配置步骤:
1、将数据库驱动的jar包,拷贝CATALINA_HOME/lib
2、在WEB应用的META-INF目录下建立一个名字为context.xml的配置文件,并增加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
  <Resource name="jdbc/day14" auth="Container" type="javax.sql.DataSource"
               maxActive="20" maxIdle="10" maxWait="10000"
               username="root" password="sorry" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql:///day14"/>
</Context>



3、使用JNDI获得数据源(配置正确地话,Tomcat会根据context.xml的配置,建立一个数据源)

  Context initContext = new InitialContext();
 Context envContext  = (Context)initContext.lookup("java:/comp/env");
 DataSource ds = (DataSource)envContext.lookup("jdbc/day14");


四、数据元数据信息的获取
1、元数据:关于数据库、表、记录、sql语句的一些定义信息
2、有以下几种元数据信息
DataBaseMetaData:获取数据库本身的相关信息 Connection.getMetaData();
ParameterMetaData :sql语句中的参数 PreparedStatement.getParameterMetaData()
ResultSetMetaData:代表结果集中的元数据信息 ResultSet. getMetaData()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值