*反射
*反射的第一步获得class文件加载到内存,形成字节码文件的对象Class对象.
*获取class文件字节码文件的三种方式
一种:
类名.class
二种:
通过类的实例对象,.getClass()方法获得
三种:
调用Class的静态方法
Class.forName("类的全路径")
*内省:
用来获得JavaBean的属性及属性的get和set方法.
JavaBean就是一个满足了特定的类
*事务:
逻辑上的一组数据,组成这组操作的各个逻辑单元要么一起成功,要么一起失败.
而,Java中做事务管理的是Connection,所以,我们如果要做到事务管理,一定要操作Connection
*MYSQL的事务管理有两种方式:(MYSQL数据库事务默认是自动提交的,Oracle数据库事务默认是不自动提交)
1.手动开启事务
start transaction; 开启事务
多条sql;
rollback:回滚
commit:提交
2.设置一个自动提交参数
show variables like '%commit%' 查看与commit相关参数
*Java事务管理
*JDBC管理实务核心思想:利用事务管理的connection思想
*JDBC的事务管理的API
setAutoCommit
commit
rollback
*DBUtils实现事务管理
QueryRunner
query
update
*事务特性
原子性:强调事物的不可分割.
一致性:强调的是事务的执行的前后,数据的完整性要保持一致.
隔离性:一个事务的执行不应该受到其他事务的干扰
持久性:事务一旦结束(提交/回滚)数据就持久性保存到了数据库.
*如果不考虑事务的隔离性,引发一些安全性问题
*一类 :读问题
*脏读:一个事务读到另一个事务还没有提交的数据.
*不可重复读:一个事务读到了另一个事务已经提交的update的数据,导致在当前的事务中多次查询结果不一致.
*虚读/幻读:一个事务读到了另一个事务已经提交的insert的数据,导致在当前的事务中多次查询结果不一致.
*一类写问题
*引发两类丢失更新
*解决引发的读问题
*设置事务的隔离级别:
read uncommitted:未提交读.脏读,不可重复读,虚读
read committed:已提交读.避免脏读,但是不可重复读和虚读有可能发生.
repeatable read:可重复读.避免脏读,不可重复读,但是虚读有可能发生.
serializable:串行化的.避免脏读,不可重复读,虚读的发生
*三层架构:
视口层(可见)
中间层
操作数据库层
|
|