一、事务的特性;事务的隔离级别。
1、MySQL
查看当前的事务隔离级别:SELECT @@TX_ISOLATION
更改当前的事务隔离级别:SET TRANSACTION ISOLATION LEVEL 隔离级别
2、事务的隔离级别
READ UNCOMMITTED:脏读、不可重复读、虚读都有可能发生。
READ COMMITTED:能避免脏读,不可重复读、虚读都有可能发生。
REPEATABLE READ:能避免脏读、不可重复读,虚读有可能发生。
SERIALIZABLE:能避免脏读、不可重复读、虚读。有一个性能的问题 因为会加锁 所以降低了性能。
3、JDBC中控制事务的隔离级别
Connection.setTransactionIsolation(int level) :level是Connection接口中的常量来表示的。
原则:开启事务前先设置隔离级别。
二、连接池的概念
三、编码理解连接池的原理
javax.sql.DataSource
四、编写标准连接池及遇到的问题
1、对一个已有类(不能修改)中的某个方法进行增强,有以下方式:
继承:此处不合适
使用包装设计模式:
编写步骤:
a、编写一个类,实现与被包装类相同的接口或继承被包装类
b、定义一个私有变量,记住被包装对象的引用
c、定义构造方法,传入被包装对象的引用
d、对于要增强的方法,只管重写
e、对于不需要增强的方法,调用原有对象的原有方法。
动态代理:
五、开源的连接池使用
DBCP
C3P0
六、Tomcat管理数据源
1、前提:拷贝数据库的驱动到Tomcatlib目录下
2、在应用的META-INF目录下建立一个名字为context.xml的配置文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/day14" auth="Container" type="javax.sql.DataSource"
maxActive="30" maxIdle="10" maxWait="10000"
username="root" password="sorry" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/day14"/>
</Context>
注:经过以上配置,容器启动时就是会创建好数据源。
3、获取数据源并使用。(JNDI的API)Java Naming and Directory Interface Java命名与目录服务
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/day14");
Connection conn = ds.getConnection();
七、获取数据库的元信息(编写框架用)
1、元信息:数据库的定义信息等。
2、DataBaseMetaData:数据库本身的元信息。
3、ParameterMetaData:sql语句的占位符元信息
4、ResultSetMetaData:结果集的元信息。
八、自定义JDBC框架
策略设计模式
反射和泛型