当前位置:Gxlcms > 数据库问题 > JavaWeb系列之十三(jdbc事务与连接池)

JavaWeb系列之十三(jdbc事务与连接池)

时间:2021-07-01 10:21:17 帮助过:4人阅读

              2.一致性:在事务操作过程中,数据要保持一致性,比如钱不会多,也不会少               3.隔离性:多个事务同时对一张表操作,多个事务不会互相影响               4.持久性:提交事务到数据库,是真正生效 4.事务的隔离性     不考虑事务的隔离性,产生一些问题,五个问题     三个读对的问题:第一个问题:脏读,一个事务获取到另外事务的没有提交的事务                     第二个问题:不可重复读,一个事务里面查询到已经提交的事务,另外一个事务里面是update,导致两个事务查询到的数据是不一样的。                     第三个问题:虚读:一个事务里面查询到另外一个事务里面insert操作     解决方式:通过隔离级别解决这些读的问题     Serializable:串行的.避免脏读、不可重复读和虚读发生        Repeatable read:重复读. 避免脏读、不可重复读.但是虚读还是有可能发生的,默认是这个,两个事务都需要提交了,才能查询到     Read committed:已提交读.避免脏读.但是不可重复读和虚读有可能发生,提交的时候,才能查询到钱,避免了损失。导致两个事务查询到的数据是不一样的     Read uncommitted:未提交读.脏读、不可重复读、虚读都可能发生 没有提交就可以查询到内容,如果回滚的话,就会查不到钱。           select @@tx_isolation;  查询当前事务隔离级别     set session transaction isolation level  设置事务隔离级别     (1)演示脏读         第一步:打开两个cmd窗口         第二步:设置隔离级别         第三步:开启事务         第四步:在左边查看数据          Read committed:在左边窗口通过食物查看数据,这两次看得结果不一样,         多个事务之间互相印象,不可重复读 5.mysql数据库的备份和还原     第一种:使用可视化工具进行备份     第二种:使用sql语句     mysqldump -u root -p  要备份的数据名称>要放的磁盘        通过这个语句备份的数据库语句里面,没有创建数据库的语句     注意1:不能连接数据库     注意2:没有创建数据库的语句     注意3:备份文件要以.sql为后缀名     注意4:备份路径不能有中文     mysqldump -u root -p day16 >d:\day17.sql     还原数据库     mysql -u root -p 要还原的数据库<备份的文件路径     注意1:执行的语句后面不能写分号     注意2:不要登录  6.连接池的概述     之前得到数据库连接DriverManager.getConnection();     每个用户连接都需要执行一次,运用连接池来解决     预先创建一些连接,放到内存中的一个空间,每次访问的时候,从内存空间里面获取一个链接,用完之后不进行关闭,放回内存空间里面,供其它用户使用。避免频繁的创建和关闭在内存空间理解为,一个容器,容器里面放着数据库的连接。     自定义连接池(了解)          创建一个类实现一个接口DataSource     在内存中分配一个空间List集合,把创建的多个连接放到集合里面     把创建的连接放到集合里面去   add()     把链接取出来,remove(0) 
    开源的连接池     DBCP连接池     C3P0连接池(一般企业中的都使用这个连接池)     Tomcat内置的连接池
如何增强一个类的方法     第一种继承     public class TestMethod {     public static void main(String[] args) {     Man m=new SuperMan();     m.run1();        }     }     class Man{     public void run1(){     System.out.println("nam run");     }     }     class SuperMan extends Man {     public void run1(){     //super.run1();     System.out.println("supernam run");     }     }     第二种装饰者模式         首先创建一个接口,在接口里面定义一个方法         写两个类,这两个类分别实现这个接口         在增强的方法所在类里面,得到增强方法所在类的引用     public class TestMethod2 {     public static void main(String[] args) {     Diao d=new Diao(new Ying());     d.fly();     }        }     interface Bird{     public void fly();     }     class Ying implements Bird{     public void fly() {     // TODO Auto-generated method stub     System.out.println(1000);     }     }     class Diao implements Bird{     private Bird bird;     public Diao(Bird bird){     this.bird=bird;         }     public void fly() {     // TODO Auto-generated method stub     bird.fly();     System.out.println(0);     }        }     第三种动态代理 9.开源连接池     DBCP连接池:Apache软件组织,开源的连接池,首先导入jar包     BasicDataSource :手动配置文件方式     BasicDataSourceFactory:自动配置文件,配置文件的名称是固定的不能改变     C3p0连接池         想要使用c3p0连接池,的jar包         ComboPooledDataSource    完成连接池的连接         第一种手动进行配置,创建类         combo.setDriverClass("com.mysql.jdbc.Driver");         combo.setJdbcUrl("jdbc:mysql:///day18");         combo.setUser("root");         combo.setPassword("root");         第二种配置         创建一个配置文件,不是properties格式,是xml配置文件         注意1:xml的名称是固定c3p0-config.xml.,注意2:配置文件要放在src下面,不能放在其他下面,         在new ComboPooledDataSource("")不写或则写错,找默认读取defalut-config 里面的信息,     tomcat内置连接池         使用的jndi技术,需要在tomcat里面进行         有一个类,想要调用这个类,给类起一个名称,通过起这个名字访问类         * 步骤         第一步: 创建一个配置文件,名字固定context.xml         这个文件需要创建在可以有三个地方         第一个可以把文件创建在conf目录下面: 在tomcat里面所有的虚拟主机都可以使用         第二个可以把文件创建\conf\Catalina\localhost:只能在当前的虚拟主机里面使用         第三个可以把文件创建在META-INF:只能在当前的项目里面使用(一般都使用这种方式)         第二步:创建servlet实现连接池         由于tomcat内置的连接池,必须要运行在tomcat里面才可以使用这个连接池









JavaWeb系列之十三(jdbc事务与连接池)

标签:

人气教程排行