A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 lovemiya 于 2018-5-21 16:27 编辑

JDBC高级



事务管理的核心思想:
  • 业务逻辑的操作要使用同一个Connection对象

高可用:
  • 代码层面:

    • 代码的复用性:把一些相同的或者相似的操作抽取出来
    • 程序的解耦合:外部的配置文件
    • 面向接口编程:

      • public void method(List list){}

    • 设计模式:装饰着模式

  • 高性能:
  • 继承:
  • 装饰者模式:

连接池概述
  • 连接对象创建和销毁需要耗费时间,在服务器初始化的时候就初始化一些连接放到内存中提升性能.

自定义连接池的实现步骤
  • 编写一个类实现DataSource接口
  • 重写getConnection方法
  • 初始化多个连接在内存中
  • 编写归还连接的方法

自定义连接池问题及解决问题
  • 使用接口完成实现类的构造

    • MyDataSource dataSource = new MyDataSource()
    • 这种方法不方便程序的扩展

  • 额外提供了方法归还连接

解决
  • 将原有的close方法的逻辑改为归还(即增强一个类中的方法)
  • 增强一个类中的方法:

    • 采用继承的方式(最简单)

      • 条件:必须能够控制这个类的构造

    • 采用装饰者模式:

      • 条件:

        • 增强的类和被增强的类实现相同的接口
        • 在增强的类中获得被增强的类的引用


    • 动态代理的方式


Druid开源连接池概述
  • Druid是阿里旗下的开源连接池产品,使用非常简单,可以与Spring框架进行快速整合

使用
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///web_test4");
dataSource.setUsername("root");
dataSource.setPassword("abc");
Connection conn = dataSource.getConnection();
//还可以使用配置文件的方式
//文件名称没有规定,但是key要一一对照

DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);C3P0开源连接池概述
  • C3P0是一个开源的JDBC连接池,实现了数据源和JND绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等.

使用手动设置参数方式
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 设置连接参数:
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql:///web_test4");
dataSource.setUser("root");
dataSource.setPassword("abc");
// 从连接池中获得连接:
conn = dataSource.getConnection();
采用配置文件的方式
  • 配置连接池


<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <dafault-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql:///web_test4</property>
        <property name="user">root</property>
        <property name="password">yangxuan</property>
    </dafault-config>
</c3p0-config>
  • 使用连接池


ComboPooledDataSource dataSource = new ComboPooledDataSource();
conn = dataSource.getConnection();DBUtils常用API
  • 构造方法

    • QueryRunner()
    • QueryRunner(DataSource dataSource)

  • 方法

    • updata(String sql, Object...params)
    • updata(Connection conn, String sql, Object...params)
    • query(String sql, ResultSetHandler<T> rsh, Object...params)
    • query(Connection conn, String sql, ResultSetHandler<T> rsh, Object...params)
    • commitAndCloseQuietly(Connection conn)
    • rollbackAndCloseQuietly(Connection conn)




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马