jdbc3

    xiaoxiao2021-12-14  20

    一、数据库连接池的原理

    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(讲解)

     

     

     

    转载请注明原文地址: https://ju.6miu.com/read-964728.html

    最新回复(0)