Hibernate一款功能强大的重量级ORM

Hibernate介绍

Hibernate,让程序员更方便访问数据库,一款全ORM的框架,通过操作对象来操作数据库…

Hibernate入坑

2.1 准备数据库
在这里插入图片描述

2.2 实体类
在这里插入图片描述

2.3 元数据文件
在这里插入图片描述

2.4 主配置文件
在这里插入图片描述

2.5 测试CRUD
2.5.1 get
在这里插入图片描述

2.5.2 save
在这里插入图片描述

2.5.3 update
在这里插入图片描述

2.5.4 delete
在这里插入图片描述

一级缓存

从获取单个用户可以看出,调用session的get方法会打印一次sql语句,也就是执行一次查询,那如果调用两次呢?
在这里插入图片描述

从控制台可以看出其实是只打印出了一次sql,也就是只操作了一次数据库,那么第二次调用get方法就是从缓存中获取的,那么hibernate的一级缓存是如何定义的呢?
在这里插入图片描述

从图中可以看出,当我们的程序调用session的get方法的时候,首先会先从session缓存中查找出是否符合我们所需要查询对象,如果存在我们所需要的对象,会直接返回该对象到程序中,从而并不会操作数据库,减少了数据库查询的时间,如果在缓存中查询不到我们所需要的数据对象,会从数据库中查询,返回给程序并且将该对象存入session缓存中。
其实在session中定义了一系列的集合来存储数据,而他们则构成了session缓存。只要session没有关闭,它就一直会存在。

缓存进阶之快照

当我们从数据库中取出查询结果之后,有一份数据会保存到session缓存中,其中话会有一份保存到快照中,当我们同时使用get获取对象之后,进行update操作,如果update操作的对象属性与快照中所存储的对象一致,不会进行update操作。
在这里插入图片描述

控制台中没有输入update语句,因为user对象的address属性值就是beijing,执行保存的时候,会到快照中对比属性值,如果属性值与数据库一致,也就是没有修改新的值,不会执行udpate语句。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值