说到这几个概念,不知道大家有没有和我一样的感觉,刚开始学习框架的时候总是傻傻的分不清,甚至在刚学习jdbc的PreparedStatement的时候,就只知道它是预编译的,更加安全,效率更高。并不知道为什么。但是在这篇文章中,我将尝试着将这几个概念和其中的原理描述出来,如果我有什么不对的地方,请大家帮我提出来,
首先从最开始的时候开始吧
预编译:预编译的原理就是先将一个带占位符的SQL语句,发送到数据库的缓存中去,但是不执行,然后等到用户或者将占位符替换成变量并且执行的时候在从数据库的缓存中拿出来进行DQL,或者DML操作,这样不用每次改变条件的时候都要发送一次SQL语句,实现了一次发送动态修改。并且还防止了SQL注入的风险
String sql = "insert into emp values(?,?)";
PreparedStatement ps =conn.prepareStatement(sql);//发送到数据库缓存
ps.setString(1, emp.getEname());//替换变量
ps.setString(2, emp.getJob());
ps.executeUpdate();//执行操作
批处理:所谓批处理,就是一次执行很多个SQL语句,并不是一次一次的执行,原理也是将多个SQL语句发送到数据库缓存中,然后执行的时候,一次执行所欲的sql语句,这样的话,减少了操作数据库的次数,减轻了数据库的压力,自然速度就变快了