浅谈JDBC 基础总结

JDBC

持久化概述

持久化(persistence)**: 把数据保存到可掉电式存储设备中以供之后使用。

数据持久化意味着将内存中的数据保存到硬盘上加以”固化”

而持久化的实现过程大多通过各种关系数据库来完成, 将内存中的数据存储在关系型数据库中

当然也可以存储在磁盘文件、XML数据文件中

而在 Java中,数据库存取技术只能通过 JDBC 来访问数据库。

JDBC 访问数据库的形式主要有两种:

1. 直接使用 JDBC 的 API 去访问数据库服务器 (MySQL/Oracle).
2. 间接地使用 JDBC 的 API 去访问数据库服务器.
       第三方O/R Mapping工具,如 Hibernate, MyBatis 等.(底层依然是 JDBC )
       JDBC 是 Java 访问数据库的基石,其他技术都是对 JDBC 的封装.

JDBC 概述 (Java DataBase Connectivity)

是一种用于执行 SQL 语句的 Java API,**可以为多种关系数据库提供统一访问

操作 JDBC 口诀

贾琏欲执事

  1. 载注册驱动.
  2. 获取接对象.
  3. 创建/获取句对象.
  4. 行SQL语句.
  5. 放资源.

DAO 介绍和方法设计

DAO**(Data Access Object) 数据访问对象是一个面向对象数据库接口

DAO层开发规范(重要,背)

规范就是王八的屁股—>龟腚(规定)

分包规范:**
域名倒写.项目模块名.组件;
cn.wolfcode.pss.util; // 存放工具类
cn.wolfcode.pss.domain; //装pss模块的domain类,模型对象.(Student)
cn.wolfcode.pss.dao; //装pss模块的dao接口.
cn.wolfcode.pss.dao.impl; //装pss模块的dao接口的实现类.
cn.wolfcode.pss.test; //暂时存储DAO的测试类,以后的测试类不应该放这里.

JDBC 的事务操作

事务(Transaction,简写为tx)

在数据库中 , 所谓事务是指一组逻辑操作单元 , 使数据从一种状态变换到另一种状态。

事务的ACID属性

  1. 原子性(Atomicity):原子在化学中,是最小单位,不可以再分割了.
    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  2. 一致性(Consistency): 包装数据的完整性.
    事务必须使数据库从一个一致性状态变换到另外一个一致性状态。(数据不被破坏)
  3. 隔离性(Isolation):Hibernate再讲
    事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  4. 持久性(Durability):
    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响

事务相关注意事项

  1. 默认情况下,事务在执行完 DML 操作就自动提交.
  2. 查询操作,其实是不需要事务的.但是,一般的,我们在开发中都把查询放入事务中.
  3. 开发中,代码完全正确,没有异常,但是就是数据库中数据不变.
  4. 在 MySQL 中,只有 InnoDB 存储引擎支持事务,支持外键,而MyISAM 不支持事务.
  5. 以后事务我们不应该在 DAO 层处理,应该在 service 层控制.
  6. 事务在讲解Hibernate,MyBatis,Spring,项目的时候都会再讲.

连接池思想

基本属性:连接池存了连接对象,而连接对象依赖四要素,所以四要素是基本要求

driverClassName,url,username,password

其他属性:对连接对象做限制的配置

  • 初始化连接数:5 在连接池中事先准备好5个Connection对象
  • 最多连接数:10 在连接池中最多有10个Connection对象,其他客户端进入等待状态
  • 最少连接数 : 3 在连接池中最少存在3个Connection对象
  • 最长等待时间:5 min 使用5分钟来申请获取Connection对象,如果时间到还没有申请到,则提示,自动放弃
  • 最长超时时间:10min 如果你在10分钟之内没有任何动作,则认为是自动放弃Connection对象.

11.2_常见的 DataSource 实现

DBCP : Spring 框架推荐的
C3P0 : Hibernate 框架推荐的
druid: 阿里巴巴的连接池(号称Java语言中性能最好的连接池).

Statement 和 PreparedStatement的区别(

PreparedStatement 存在的优势:

更好的可读性,可维护性.

可以提供更好的性能(预编译).MySQL 不支持 PreparedStatement 性能优化.

ement 和 PreparedStatement的区别(

PreparedStatement 存在的优势:

更好的可读性,可维护性.

可以提供更好的性能(预编译).MySQL 不支持 PreparedStatement 性能优化.

更安全,可以防止 SQL 注入的问题

猜你喜欢

转载自blog.csdn.net/weixin_47057820/article/details/107822244