事务ACID
原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分
一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变。)
隔离性(isolcation):一个事务处理对另一个事务处理没有影响。
持续性(durability):事务处理的效果能够被永久保存下来。
常用API
Connection.setAutoCommit(flase);关闭自动提交,打开事务
Connection.commit(); 提交事务
Connection.rollback(); 回滚事务
Savepoint sp = conn.setSavepoint(); 设置保存点
Conn.rollback(sp); 回滚到保存点
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); 设置隔离级别,可以通过Connection中的常量设置
隔离级别
在多线程并发访问数据库并且使用事务的时候,可能会遇到脏读,不可重复读,幻读的情况,需要设置隔离级别来避免
脏读:读到的线程未提交的数据
不可重复读:在一个事务中读取同一个记录两次,获取数据不同
幻读:在一个事务中,读取到的记录数不同
selec@@tx_isolation; 查看隔离级别
set transaction isolation level read uncommitted 设置读未提交
set transaction isolation level read committed 设置读已提交
set transaction isolation level repeatable read 设置可重复读
set transaction isolation level seralizable 设置可序列化
start transaction 开始事务
rollback 回滚事务
commit 提交事务
反射基础
构造函数
Class.getConstructors() 获取所有构造函数
Class.getConstrucor(Class…) 获取到CLASS中带有指定类型函数的构造函数
Constructor.newInstance(Object….) 使用构造函数创建对象,传入指定参数
方法:
Class.getMethods() 获取所有公有方法,包括继承的
Class.getDeclaredMethods() 获取所有类中定义的方法,包括私有的
Class.getMethod(String,Class……) 获取指定方法名和参数类型的方法(公有的)
Class.getDeclaredMethod(String, Class...)
获取指定方法名和参数类型的方法(类中定义的)
Method.invoke(Object, Object...)
在制定对象上运行方法, 将制定参数传入
属性
Class.getFields() 获取所有公有属性(包括父类继承的)
Class.getDeclaredFields() 获取所有定义的属性(包括私有的)
Class.getField(String) 获取指定属性(公有属性)
Class.getDeclaredField(String) 获取指定属性(定义属性)
Field.set(Object, Object) 设置指定对象的属性值
Field.get(Object) 获取指定对象的属性值
Filed.setAccessible(Boolean) 设置访问权限