jdbc3

一、数据库连接池的原理

1、应用程序直接获取链接的缺点
      用户每次请求都需要向数据库获得链接,而数据库创建链接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万的访问量,数据库服务器就需要创建10万次链接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出,宕机
     当应用启动时,我已经将连接创建好了放在连接池,你用完这个线程后,要将连接放回到我们的连接池








    

二、编写一个标准的数据源(重点)

一个标准的数据库连接池要实现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(讲解)

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值