对比Statement和PreparedStatement

对比Statement和PreparedStatement

1.Statement 存在sql注入问题,PreparedStatement解决了sql注入问题。

2.Statement是编译一次,执行一次,PreparedStatement是编译一次,执行N次,PreparedStatement效率较高一点。

3.PreparedStatement会在编译结点做类型的安全检查。

综上所述,PreparedStatement使用较多,只有极少数的情况下需要使用Statement

在业务方面要求必须支持SQL的时候,才会使用到Statement

JDBC事务机制:

1.JDBC的事务是自动提交的,什么是自动提交?

只要执行任意的一条DML语句,通常都只 N条DML语句共同联合才能完成的,必须保证他们这些DML语句在同一个事务中同时成功或者同时失败。

2.JDBC中只要执行任意一条DML语句,就提交一次。

将JDBC的自动提交关闭,改为手动开启事务。

conn.setAutoCommit(false);

提交事务

conn.commit();

回滚事务

if(conn!=null){
try{
conn.rollback();
}catch(SQLException e){
e.printStackTrace();
}
}

3.乐观锁和悲观锁

其中事务 1先修改了,修改之后看了版本号是1.1,遇事提交修改的数据,将版本号修改为1.2。

其中事务2后修改的,修改之后准备提交的时候,发现版本号是1.2,和他最初读取的版本号不一致,回滚。

悲观锁:事务必须排队执行,数据锁住了,不允许并发

乐观锁:支持并发,事务也不需要排队,只不过需要一个版本号。

posted @ 2021-03-17 08:52  新晋小白白  阅读(39)  评论(0编辑  收藏  举报