day10
数据库连接池:
连接池简述及原理:
连接池简述及原理:
DataSource 由厂商去实现
市面上常见的几种连接池:
DBCP连接池、C3p0连接池、Druid连接池(阿里)
DBCP连接池和c3p0连接池的对比:
Dbcp:效率高,但是安全性一般
C3p0:安全性很高,效率偏低
dbcp连接池
基本的步骤:
- 导包
- 需要一个配置文件
核心类与方法是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包:
未完…待续…