JDBC事务&连接池:数据库连接池,DBUtils工具,Java web项目分层,JDBC事务

数据库连接池:

连接池简述及原理:

在这里插入图片描述

连接池简述及原理:

DataSource 由厂商去实现

市面上常见的几种连接池:
DBCP连接池、C3p0连接池、Druid连接池(阿里)

DBCP连接池和c3p0连接池的对比:

Dbcp:效率高,但是安全性一般
C3p0:安全性很高,效率偏低

dbcp连接池

基本的步骤:

  1. 导包
  2. 在这里插入图片描述
  3. 需要一个配置文件
    核心类与方法是DateSorce ds = BasicDataSourceFactory.createDataSource();
配置文件导入:

在这里插入图片描述
在这里插入图片描述

编写连接池工具

在这里插入图片描述

c3p0 连接池 :

使用的比较多一点 spring springmvc springdata springboot(全家桶) springcluob hibernate
都使用c3p0

c3p0 使用的基本步骤 :
1.导包
在这里插入图片描述
2.配置文件 第一点:这个配置文件必须放在src下面
3. 文件必须包含c3p0
在这里插入图片描述
在这里插入图片描述

编写连接池工具—命名配置

在这里插入图片描述

DBUtils工具类:

dbutils +c3p0: 就是对jdbc的一个封装,使用起来更加方便
导入一系列jar包:
在这里插入图片描述

DBUtils核心类-QueryRunner创建

在这里插入图片描述

使用DBUtils核心类完成数据更新操作

在这里插入图片描述
在这里插入图片描述

两行代码 +jar+ 配置文件+分层
private DataSource ds = new ComboPooledDataSource();
// QueryRunner 这个是dbutils 提供的一个增删改查对象
private QueryRunner qr = new QueryRunner(ds);

dbutils 是一个简化jdbc代码的半成品框架 也就是对jdbc 的一个封装

QueryRunner 核心对象 , 提供了一些增加 删除修改 查询的方法

增加 删除 修改的方法 qr.update() 第一个参数: 连接对象(可有可无)
第二个参数 sql语句
第三个参数是 占位符的值

ResultSetHandler接口简介

在这里插入图片描述

查询的方法 qr.query() 全查 第一个参数是sql 语句 第二参数 BeanListHandler(User.class) 表示返回的是 一个结果集,就是集合,这个集合的泛型对应的就是其类名(列名与属性名都必须一样(通过反射来查找对应的属性))

位符可以传多个参数,也可以放在数组

new MapHandler() 返回的是第一行数据, 把第一行数据封装成了一个map对象

查询单个对象 使用的是 new BeanHandler(User.class) 占
MapListHandler() 返回是多行记录,把每一行封装成一个map 对象

new ScalarHandler() 返回的总记录数 z注意点:一定要先使用long类型接收,再进行转化

Java web项目分层:

在这里插入图片描述

DAO —— Data Access Object数据访问对象(接口)

DAOImpl —— DAO的实现类

entity —— 数据对象的实体(有些地方叫model层)

Service(不是Server)——就是中间层、业务逻辑层(接口)

ServiceImpl —— Service的实现类

Util —— 自定义工具类

Servlet——JAVA WEB小应用(有时叫Controller层)

JAVA中Servlet层、Service层 、modle层 、 Dao层的功能区分?

Dao层
一般用于对数据库的具体操作,包括各种具体的增删改查语句和数据库数据和Java

模型的映射。

Util层
主要用于存在项目各层都有可能出现、不好划分到某层中、出现频率较高的功能(

类),比如连接数据库、获取系统参数、导出Excel表……

modle/entity层 对象
(统称模型层)就是对应的数据库表的实体类,一般每个模型层类对应一个数据库

“表”,一般是用于ORM对象关系映射,一方面方便从数据库取数据时保存为类,一

方面也方便写入数据库,简而言之就是为了方便操作数据库。

Service层
主要编写具体业务逻辑,每个Service一般包含一组相关的业务逻辑(比如用户管理

是一个Service,文章管理是一个Service)。

Servlet层
用于接收请求并且调用对应service层处理请求,是Java各层中最接近浏览器的一层

JDBC事务:

在这里插入图片描述

回滚点

在这里插入图片描述
在这里插入图片描述

事务四大特性(ACDI)

在这里插入图片描述

四个隔离级别:

1、read uncommitted 读未提交 脏数据
事物A未提交的数据,事物B可以读取到

2、read committed 读提交 不可重复读取
事物A提交的数据,事物B才能读取到

3、repeatable read 可重复读 幻读
事务A提交之后的数据,事务B读取不到

4、serializable 线性读
事务A在操作数据库时,事务B只能排队等待

管家婆家庭记账项目

jar包:
在这里插入图片描述
未完…待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值