java48(JDBC,连接池,DBCP,C3P0)

JDBC(java database connectivity):       

        SUN公司提供的一套操作数据库的标准规范。(没啥说的,就是php中的PDO,看看知道怎么用就行了)

java48(JDBC,连接池,DBCP,C3P0)_第1张图片
JDBC操作数据库实例

连接池:

        数据库连接池负责分配,管理和释放数据库连接。它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能

java48(JDBC,连接池,DBCP,C3P0)_第2张图片
java48(JDBC,连接池,DBCP,C3P0)_第3张图片

简单的模拟连接池:

        工具类:

java48(JDBC,连接池,DBCP,C3P0)_第4张图片

        补充说明:Class.forName 和 import :

        import是当你要用到java类库或者是其他包里面的类时,需要添加上。“静态的加载方式”当程序执行时,去相应的路径寻找这个类的实现体。( 需要你在写代码时候了解这个类的属性和方法才能使用)

        class.forName(class)会加载类,这是一个“动态的加载方式”!加载类的时候,会初始化一个Class对象(注意不是类的实例)。当你不需要创建任何实例,而需要jvm去做一些事情的时候,使用class.forName()非常有用,这就是为什么数据库的驱动程序都是用这种形式来加载,因为加载驱动程序不需要创建对象实例。

        自定义连接池类:

java48(JDBC,连接池,DBCP,C3P0)_第5张图片

标准的数据源:

        自定义数据库连接池需要实现javax.sql.DataSource接口,这个接口叫做数据源

        在DataSource构造函数中批量创造与数据库的连接,并把创建的连接加入LinkedList对象中。

        实现getConnection方法,让getConnection方法每次调用时,从LinkedList中取一个Connection返回给用户

        当用户使用完Connection,调用Connection.close()方法时,Connection对象应保证将自己返回到LinkedList中,而不是返回给数据库

运用装饰模式实现close方法:

        主线程调用连接池:

java48(JDBC,连接池,DBCP,C3P0)_第6张图片

        自定义MyDataSource类

java48(JDBC,连接池,DBCP,C3P0)_第7张图片

        装饰myConnection类

java48(JDBC,连接池,DBCP,C3P0)_第8张图片
java48(JDBC,连接池,DBCP,C3P0)_第9张图片

DBCP:

        DBCP: Apache推出的Database Connection Pool

        使用步骤:

                添加jar包

                添加属性资源文件

                编写数据源工具类

DBCPUtil:

java48(JDBC,连接池,DBCP,C3P0)_第10张图片
java48(JDBC,连接池,DBCP,C3P0)_第11张图片

C3P0:

java48(JDBC,连接池,DBCP,C3P0)_第12张图片
java48(JDBC,连接池,DBCP,C3P0)_第13张图片
java48(JDBC,连接池,DBCP,C3P0)_第14张图片

你可能感兴趣的:(java48(JDBC,连接池,DBCP,C3P0))