一,事务的性质
事务具有ACID属性,为了使其达到这些性质的要求,于是产生了相关的编程规范
1.原子性
2.一致性: 事务操作前后,数据库的状态 均处于一致性
3.隔离性: 在并发处理中,事务之间互不干扰
4.持久性: 一个事务一旦提交,其操作结果就永远保持下来
二,事务的实现原理
1.将默认属性autocommit(自动提交)设置为false: 事务中的每一个操作不自动提交
2.调用commit来提交, 使sql语句的操作在数据库上产生效果
3.若该部分操作出现问题,使用rollback,回滚到上一个数据库稳定状态
一个注意点:
关闭connection连接,会自动提交事务,所以在同一个事务中,共用一个connection对象。
三,事务隔离的级别
事务中可能出现的问题:
1.脏读: 读取到未提交的值
2.不可重复读: 两次对同一字段读取到的值不一致
3.幻读: 两次对同一个表的访问不一致(增加数据记录)
由此产生的隔离级别:
1.读未提交: 可以读去未被提交的值
2.读已提交: 解决了脏读
3.可重复读: 解决了不可重复度
4.串行化: 解决了幻读
实现方法:
//获取当前连接的隔离级别
System.out.println(conn.getTransactionIsolation());
//设置数据库的隔离级别:
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
四,DAO类实现的思想
1.一个基类BaseDAO定义为抽象类,供每个数据对象类继承,其中实现最底层的操作
2.数据库中每一类数据对应一个 类 ,定义该类的接口,其中声明该类顶层的方法
3.定义子类,继承BaseDAO基类,实现数据接口,其中使用BaseDAO中的底层操作来实现接口中的方法
注意点: 通过获取父类的泛型,使BaseDAO基类在每一次被继承后,立马被标记为子类的DAO,于是操作中返回的数据对象,可直接使用泛型对象存储,不需要在传递对象来标记