JAVAWEB系列-2-5
JSP基本使用
El表达式
JSTL
Listener
Filter
JDBC
Junit

JDBC(java databse connectivity)

定义:是java程序连接和存取数据库的应用程序接口,为java开发者使用数据库提供了统一的操作方式
组成:JDBC API和JDBC驱动程序API
JDBC API:负责与JDBC驱动程序管理器API进行通信
JDBC驱动程序管理器API:负责与第三方驱动程序进行通信,并返回结果或者执行产生的结果

涉及到的关键结构

JDBC驱动程序管理器:动态管理和维护数据库查询所有厂商或第三方所提供的驱动程序对象
驱动程序(Driver):由数据库厂商或者第三方提供。可以向特点数据发送SQL请求,并为java程序获取结果。
    作用:是java和数据库之间的桥梁

JDBC的使用:

图片说明

事务

事务的定义:是一种为了包含数据的操作的完整性的机制    
开启事务: start transaction;
事务的提交:conn.commit();
事务的回滚:conn.rollback();

事务的四大特性:ACID

    Actomicity:原子性:操作是整体,要么全部成功,要么全部失败
    Consistency:一致性:一个事务发生错误的时候,所有更改的数据要回滚到修改前的状态
    Isolation:隔离性:事务查看的状态要么是另外一个事务修改前,要么是修改后,不可能是中间状态
    Duraing:持久性:持久性事务完成以后,对系统的影响是永久的

事务的四种等级:

    Read Uncommitted(读取未提交内容)
        在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏(Dirty Read)。
    Read Committed(读取提交内容)
        这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。
    Repeatable Read(可重读)
        这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。
    Serializable(可串行化) 
        这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

DAO模式:

database access object——————》即一个用于数据库操作的对象
解释:是一种访问数据的设计模式,将对数据的操作封装到一个类中,由其他类来调用这个类来完成对数据库的操作,可以达到简化负责业务处理的类的复杂度和耦合度
实现步骤:
    新建一个 dao 接口,声明数据库访问规则(一系列与数据库操作直接相关的,对数据库进行更新、查询、删除、修改等操作的方法)
    新建一个 dao 实现类,具体实现 dao 接口中定义的方法
    新建一个 dao 实现类对象,直接使用其中的方法与数据库交互

PreparedStatement:

作用:防止SQL注入(因为会将用户的非法输入用反斜杠进行转义)
    **SQL注入:web应用程序对用户的输入的数据的合法性没有判断或者是过滤不当,攻击者可以在死海泥定义好的sql语句的结尾添上额外的SQL语句,在管理员不不知情的情况下实现非法操作。

使用:
图片说明