第二十天:听课笔记

1.factory 和 配置文件  将Dao和web解耦

UserDao dao = new UserDaoImpl(); 
你看UserDaoImpl web依赖了dao的实现类,没有确定UserDao的实现类的名字 我就得不到dao
我们用工厂设计模式  那个工厂会给我们UserDao的实现类
为了让实现类更换时不用改程序 我们通过配置文件+反射 得到具体的实现类
让工厂只有一个 单台设计模式 

Properties prop = new Properties();
InputStream in = DaoFactory.class.getClassLoader.getResourceAsStream("...")
prop.load(in);
String classname = prop.getProperties("..");
Class clazz = Class.forName(classname);
UserDao dao = (UserDao)clazz.newInstance();


类路径: 要是有多层,文件夹下

2.加载配置文件,一次就可以了,不用每次new一个工厂的时候都要加载
---->static静态代码块  或   单态设计模式

3.Utils 得到数据库连接
将url 数据库名  用户名 密码 ---->  配置文件
以后更改数据库 只用更改配置文件,应用程序和数据库解耦

4.连接池
怎么感觉像妓女 千人踩,万人压

java.sql.DataSource
将Collection加入到LinkedList  用的多的是增加和删除  底层是链表
Collection的close 应该返回到LinkedList中

批量的创建很多连接,放到LinkedList中

.close  还回到池中

5.pool获取连接 而不是utils了

6.LinkedList  pop()弹出, push(...)加到
动态代理 返回一个假的Connection 当假的.close时,将Collection返回连接池

7.DBCP

8.Tomcat数据源
JDBC DataSource
JNDI Resources

mysql.jar 放到 Tomcat下的lib    <context>

9.JNDI
Java命名和目录接口
javax.naming
Context
初始化JNDI
得到JNDI容器
从容器检索...名称对应的对象

10.事物
是逻辑上的一组操作,要么都成功,要么都不成功

start transaction 开启事务
commit;           提交事务
Rollback      回滚

事务的特性(ACID):
原子性:(XXX,YYY)被包在一起,像原子一样,不能分割,
         要么都成功,要么都失败,他们是一个逻辑单元
一致性:两个人转账,两个人的总钱要和转账前一致
隔离性:多个用户并发访问数据库
持久性:事务一旦提交,对数据库的改变的永久的

10.使用JDBC管理事务
默认:JDBC是自动提交事务,不能回滚

Connection.setAutoCommit(false);
Connection.rollback();
Connection.commit();

11.
Connection conn = null;
try{
        ...update.1...
    ...update.2...
    conn.commit();
} catch(Exception e){
    conn.rollback();
}

12.设置事务回滚点
SavePonit sp = conn.setSavePoint();
conn.rollback(sp);
conn.commit();
可以设置多个回滚点

13.事务的隔离级别
ACID 的 I:

脏读:一个事务读取了另一个事务未提交的数据
不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同
            一行 update
虚读:一个事务内读取到了别的事务插入的数据,导致前后读取不一致
      多行  insert

不可重复读用在做统计

select  @@tx_isolation; 当前数据库的隔离级别

set transaction isolation level ... 只对窗口生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值