在使用框架进行开发时,由于框架底层对jdbc进行了封装,开发中实际对于其细节的知识点了解的越来越少了,但这部分知识点也是非常重要的,现在来对这部分知识做一个梳理
jdbc连接oracle数据库小demo
@Test
public void oracleInset() throws Exception{
String URL = "jdbc:oracle:thin:XX.XX.XX:1521/XX";
String USER="test";
String PASSWORD="password";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
Statement st=connection.createStatement();
String sql = "select MNT_ORG_ID from XXX where MNT_ORG_ID=1";
ResultSet set = st.executeQuery(sql);
while (set.next()){
System.out.println(set.getInt("MNT_ORG_ID"));
}
set.close();
st.close();
connection.close();
}
JDBC事务操作
默认是自动事务:
执行sql语句:executeUpdate() ---- 每执行一次executeUpdate方法 代表 事务自动提交
通过jdbc的API手动事务:
开启事务:conn.setAutoComnmit(false);
提交事务:conn.commit();
回滚事务:conn.rollback();
事务的特性:
- 原子性:事务的各步操作是不可分的(原子的);要么都执行,要么都不执
行 - 一致性:事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。
- 隔离性:对数据进行修改的所有并发事务是彼此隔离的, 这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
- 持久性:事务完成后,它对数据库的修改被永久保持
数据库事务4种隔离级别
由低到高依次为
1 Read uncommitted(读未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
2 Read committed(读已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生
3 Repeatable read (可重复度):对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生
4 Serializable (序列化)
- 脏读:一个事务修改数据,还没有提交,另一个事务就访问到这个数据
- 幻读
- 不可重复读
MySQL InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ(可重读)。我们可以通过SELECT @@tx_isolation;命令来查看,MySQL 8.0 该命令改为SELECT @@transaction_isolation;
未完待续.......
评论区