1、标准的orm框架,程序员不需要编写SQL语句。 |
2、具有良好的数据库无关性,即数据库发生变化的话,代码无需再次编写。(以后,mysql数据迁移到oracle,只需要改方言配置)。 |
3、学习门槛高,需要对数据关系模型有良好的基础,而且在设置OR映射的时候,需要考虑好性能和对象模型的权衡。 |
4、不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好。 |
5、程序员不能自主的去进行SQL性能优化。 |
Mybatis应用场景:****
需求多变的互联网项目,例如电商项目。
Hibernate应用场景:****
需求明确、业务固定的项目,例如OA项目、ERP项目等。
三、延迟加载(懒加载)
延迟加载又叫懒加载,也叫按需加载。也就是说先加载主信息,在需要的时候,再去加载从信息。在mybatis中,resultMap标签 的association标签和collection标签具有延迟加载的功能。
UserMapper.java |
|
OdersMapper.java |
|
UserMappler.xml |
|
OrdersMapper.xml |
|
在全局配置文件中配置懒加载 |
|
测试 |
|
没有配置懒加载之前:即使不打印订单所属人的信息,也会执行查询订单所属人的sql语句。
配置懒加载后:只有在代码执行到打印所属人信息那一行时才会执行查询订单所属人的sql语句。
四、一级缓存
一级缓存指的就是sqlsession,在sqlsession中有一个数据区域,是map结构,这个区域就是一级缓存区域。一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。一级缓存中的value,就是查询出的结果对象。
原理:
第一次查询id为1的用户,会执行sql语句,并将结果写入sqlsession一级缓存区域Map。
第二次查询id为1的用户,不会执行sql语句,而是从一级缓存中读取数据。
若在第一次和第二次查询之间执行了保存、删除、更新的操作,一级缓存将会消除,之后进行第二次查询id为1的用户又会执行sql语句。
总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路, 需要zi料+ 绿色徽【vip1024b】
但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
由于内容太多,这里只截取部分的内容。
VAYWR-1710351414739)]
[外链图片转存中…(img-4qpvGyoW-1710351414740)]
由于内容太多,这里只截取部分的内容。