一、数据库连接池的原理
二、编写一个标准的数据源(重点)
一个标准的数据库连接池要实现javax.sql.DataSource接口,按照字面意思,你的连接池一般称之为“数据源”
DataSource接口中定义了两个重载的getConnection 方法:Connection getConnection()
实现DataSource 接口,并实现连接池功能的步骤
在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入linkedList对象
实现getConnection方法,让getConnection方法每次调用时,从linkedList中取一个Connection返回给用户
当用户使用完Connection,调用Connection.close()方法时,collection 对象应保证将自己返回到linkedlist中,而不要把conn还给数据库
collection保证将自己返回到linkedlist中是此处变成的难点
四、编程难点:
1、当用户在使用连接池获取链接后,一般都会调用Connection.close()方法,关闭链接。而我们需要的是把链接还回池中。
2、对于已知类(不能修改他的源码)的某个/些方法,改变他的原有行为,解决方案:
a、继承(不建议使用)
b、装饰(包装)设计模式:IO(必须会)对于已知类的已知方法,不改的方法仍保持原有行为
//包装心法
1、编写一个类,实现与被包装类相同的接口(包装类和原有类有着相同的行为)
2、定义一个变量,引用原有类的实例
3、定义构造方法,把原有类的实例注入进来
4、对于要改变的方法,编写自己的代码
5、对于不需要改变的方法,调用原有类的对应方法。
默认适配器
c、动态代理:(AOP面向切面编程)
基于接口的动态代理:Proxy
被代理对象一定要实现了某个接口。
基于子类的动态代理:CGLIB
----------------------------------------------------------以上是帮助理解
五、开源数据源的使用:
1、DBCP(练一遍)
DataBaseConnection Pool
a、需要的jar:commons-dbcp.jar commons-pool.jar
b、设置配置文件
c、编写一个工具类
2、C3P0(练一遍)
a、考jar包
b、写配置文件
c、编写一个工具类
3、利用Tomcat服务器管理数据源(练一遍)
JNDI:JavaTMNaming and Directory Interface
他是一个集合:Map<String,Object>.String:path+name;Object:任意对象。类似window系统的注册表。
一般服务器都是通过JNDI存放数据源的。数据源的配置。
3.1配置Tomcat管理的数据源
a、把数据库驱动拷贝Tomcat\lib目录中
b、在应用的META-INF目录下,建立一个名称为context.xml的配置文件,内容如下:
c、部署应用,启动Tomcat,服务器就会按照配置在JNDI容器中注册数据源的实例。
-----------------------------------------------------------------------------------
d、获取数据源
利用JNDI的API(JDK:javax.naming.*)把数据源根据path+name查询出来。
---------------------------------------------------------下面的是与框架有关
六、数据库元信息的获取
1、数据库元信息:指数据库、表等的定义信息
2、作用:编写框架用的
编写自己的JDBC框架:(策略模式)
开源JDBC框架:DBUtils
七、JDBC框架
1、ORM:ObjectRelation Mapping(对象关系映射)
Hibernate、JPA(JavaPersistent API标准)
MyBatis
2、JDBC代码封装:
Spring JDBCTemplate
commons-DBUtils(讲解)