JDBC 数据源及JNDI

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值