回顾:
mvc
jsp的设计模式1:
jsp+javabean
jsp的设计模式2:
jsp+javabean+servlet
jsp:展示数据
javabean:封装数据 封装对数据的访问
servlet:处理请求
mvc:
将业务逻辑 代码 显示相分离
M:model 模型 封装数据 封装对数据的访问
V:view 视图 展示数据 目前由jsp担任
C:controller 控制 处理请求
三层架构:
web:
作用:
展示数据
接受请求
调用service
页面的跳转,信息的生成
service:
作用:
处理逻辑
调用dao
dao:
作用:
对数据库的curd操作
/
反射:
先获取class对象,无所不能
事务:
一件完整的事情.可以包含多个操作,操作要么成功,要么全部失败
mysql中的事务:
默认是事务自动提交
手动提交:
1.关闭自动提交
2.手动开启一个事务
start transaction;
commit;
rollback;
java中的事务:
Connection接口的api
setAutoCommit(false):手动的开启一个事务
commit():提交
rollback():回滚
DBUitls使用事务:
1.创建QueryRunner
new QueryRunner():手动事务 调用他的方法的时候必须手动传入一个连接,连接得手动关闭,事务得手动控制.
new QueryRunner(DataSource ds):自动事务 调用他的方法的时候不需要传入一个连接,连接自动关闭,事务自动控制.
2.使用的方法 (手动事务)
query(…)
update(Connection conn …..)
事务中要想保证在一个事务中,必须保证使用同一个连接
方式1:向下传递连接
方式2:将连接和当前线程绑定
ThreadLocal
常用的方法:
set(Object value)
Object get()
remove()
事务的特性:
ACID
原子性 一致性 隔离性 持久性
若不考虑隔离性的时候会发生的问题
脏读
不可重复读
虚读
隔离级别:
read uncommitted:读未提交 什么问题都避免不了
read committed:读已提交 避免脏读
repeatable read:可重复读 避免脏读和不可重复读
serializable:串行化 避免所有的问题 锁表
安全:
serializable>repeatable read>read committed>read uncommitted
效率
serializable