drivermanager解耦的设计,采用抽象工厂模式,匹配数据库服务商
Connection 跟数据库建立联系的一个封装 本质是一个socket,采用tcp/ip协议
statement语句集,sql的解析器,解析sql语法(协议,语言,语法)
resultset 通过执行sql获得的一个结果的封装,在java中的体现形式就是有游标的map
datasource是对connection的增强采用的是包装器模式
transactionmanager,也是通过获取connection进行commit和rollback操作
conn。setAutoCommit(false);设置是否自动提交,false则是不自动提交,需要手动commit
事务的特性
原子性,一个事务,也就是数据库的一组操作,要么都提交,要么都回退,不能一个完成另外几个失败
一致性,一致性与原子性密切相关,总体状态不会变,
隔离性,一个事务的内部操作以及使用的数据对同时执行的其他事务是隔离的,每个事务之间是相互独立的
并且互不干扰
持久性:数据一旦写进table里面便不可改变,从内存中写到磁盘上
脏读:一个事务对数据进行了增删改,但是未提交,另外一个事务可以读取到未提交的数据,如果第一个事务进行了回滚操作
第二个事务就读到了脏数据
不可重复读:一个事务发生了两次读操作,第一次读操作和第二次操作之间另外一个事务对数据进行了修改
这两次读取的数据是不一致的
幻读:一个事务对一定范围内的数据进行批量修改第二个事务在这个范围增加一条数据这时候第一个事务
就会失去对新增数据的修改
隔离级别 readuncommited 可能导致脏读
readcommited避免脏读,可能出现不可重复读和幻读
repeatableread 避免脏读不可重复读,允许幻读
serializable串行化读事务只能一个一个执行避免了脏读不可重复读和幻读,执行效率慢