概念
作用
[1]抽取公共问题
[2]开发专注业务
[3]降低维护成本
[4]层级逻辑复用
分层
[]表现层 用户展示 SpringMVC、Structs
[]服务层 业务逻辑 Spring
[]持久层 数据访问 Hibernate、Mybatis、SpringData JPA
JDBC
区别
[1]直接编译Statement SQL使用参数 单次连接有效 每次编译
[2]预先编译PreparedStatement SQL使用占位符 整个DB有效 一次编译,每次传参
DBUtils
属性 JDBC访问框架_轻量级别
条件 JavaBean属性与DB字段必须一致
组成
[一]QueryRunner
[二]ResultSetHandler
[1]ArrayHandler 结果集第一行,转换数组
[2]ArrayListHandler 结果集每一行,转换数组,存放List
[3]BeanHandler 结果集第一行,封装JavaBean
[4]BeanListHandler 结果集每一行,封装JavaBean,存放List
[5]ScalarrHandler 单行单列的结果集
[三]c3p0
[1]连接数据源 默认扫描 classpath目录的"c3p0-config.xml"
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
[2]创建查询实例 封装获取数据源、预编译PreparedStatement、处理结果集
QueryRunner queryRunner = new QueryRunner( C3P0Util.getDataSource() );
[3]执行查询 封装释放资源 [ 放回连接池与DB的连接 ]
queryRunner.query( SQL,new ScalarHandler() ) ;
[4]执行操作
queryRunner.update( SQL,, );
安全_防止SQL注入 PrepareStatement
c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mhg</property>
<property name="user">root</property>
<property name="password">k9718</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config>
</c3p0-config>
Hibernate
属性 全自动ORMORM数据访问层框架
原理 解析xml,反射调用JavaBean方法
组成
[1]*.java 映射类 描述数据库表结构
[2]*.hbm.xml 映射文件 描述数据库表与映射类的关系 属性:字段;类:表;实例:记录
[3]*.cfg 配置文件 数据库连接信息
[4]*.xml 配置文件 数据库连接信息
[5]*.properties 配置文件 数据库连接信息
MyBatis
属性 半自动ORM数据访问层框架_轻量级别
原理 解析xml,反射调用JavaBean方法
组成
[1]配置文件 管理数据源、事务
[2]映射文件 管理SQL、JavaBean、映射输入参数、输出参数
功能
[1]SQL动态生成 配置文件标签拼接
[2]SQL位置分离 配置文件与代码分离
[3]SQL集中管理 SQLMapper
[4]缓存功能 一级缓存sqlSession级别、二级缓存mapper级别
[5]延迟加载
说明 资源文件mapper.xml,修改后无须重新编译