一、标准的连接池
实现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()