hibernate以及mybatis的缓存、预编译、延迟加载(也就是懒加载)和批处理的含义和区别

本文详细解释了预编译(PreparedStatement)、批处理、Hibernate和MyBatis的一级缓存、二级缓存以及延迟加载(懒加载)的概念和工作原理。预编译通过SQL语句的缓存提升性能并防止SQL注入;批处理一次性执行多个SQL语句,减少数据库交互;一级缓存在Session中存储查询结果,减少数据库查询,但DML操作会导致缓存失效;二级缓存将数据序列化到硬盘,跨Session共享;延迟加载则在需要时才执行关联查询,提高效率。
摘要由CSDN通过智能技术生成

说到这几个概念,不知道大家有没有和我一样的感觉,刚开始学习框架的时候总是傻傻的分不清,甚至在刚学习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语句,这样的话,减少了操作数据库的次数,减轻了数据库的压力,自然速度就变快了

        hi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值