hibernate 主要的操作的简单分析

查询功能:
 1.判断参数类型的个数是否和值的个数相等
 2.将hql转换成sql
 3.获取一个Statement语句(包括分页)
 4.获取一个ResultSet数据集合
 5.getKeyFromResultSet,Read a row of Keys from the ResultSet into the given array,
    If an id is given, don't bother going to the ResultSet.if not,get the id by IdentifierType from ResultSet
 6.getRow,通过Key的值来判断是否已经存在,如果存在从缓存中取,否则,1,初始化一个新的对象,2。初始化一个EntityEntry实体类。
3,获取其他的属性值,不包括主键值,4更新EntityEntry实体类的值(更新属性值)5合成对象,主键有值,属性为空
7。给合成对象的其他属性设值
8 。更新EntityEntry实体类的值(更新status的状态由LOADING变为LOADED)
9。得到一个查询的obj数组
10.返回list组装的obj数组。
11.如果有多条记录,从4——9重复执行。

保存功能:
判断obj对象是否在EntityEntry实体类缓存中存在,不存在执行下面的操作。否则从缓存中取。
1。根据主键的产生方式获取主键的id值
2。根据主键id的值组装一个key对象根据key查询obj对象是否在Entity缓存中,如果不存在执行下面的操作,否则从缓存中取。
3。把id的值付给obj对象。
3。初始化一个EntityEntry实体类。status为SAVING,lockMode为WRITE,existsInDatabase为false
4。获取属性的值和属于的类型
5。根据属性是否能够更新的能力,不能更改就不复制过去,用原来的值。通过属性的值和属于的类型付给属性的值。
6。对属性值为空的进行处理。
7。在obj和key保存Entity缓存中在更新EntityEntry实体类。status为LOADED,LoadedState为属性的值
8。把处理的id,values,obj,version,persister,session放在ScheduledInsertion对象中
9。把ScheduledInsertion对象放在insertions缓存中
10.commit操作,根据主键值和属性值操作数据库。
11。更新EntityEntry实体类的xistsInDatabase为true。

更新功能:
判断obj对象是否在EntityEntry实体类缓存中存在,不存在执行下面的操作。否则从缓存中取(这种情况session缓存不能关闭)。
1。根据obj获取id值,组合一个key对象,放在Entity缓存中。
2。把obj的值转变成属性值
3。初始化一个EntityEntry实体类。status为LOADED,lockMode为NONE,existsInDatabase为false,id,obj,version,放在Entry缓存中。

删除功能:
1。执行查询操作,返回一个list数据。
2。获取一个obj对象。即:list.get(i)
3. 在entityEntries缓存查找对象,有就从缓存中获取,如果没有的话,把obj保存在entityEntries缓存中,
初始化一个EntityEntry实体类的status的属性状态为LOADED,LockMode属性为NONE,existsInDatabase属性为true id属性为对象的id
4。把obj的值通过获取属性值的方法付给实体类的loadedState属性
5。通过值转换把loadedState的值赋予实体类的deletedState属性对象数组
6。把实体类的status属性变为DELETED状态
7。把处理的id,values,obj,version,persister,session放在ScheduledDeletion对象中
9。把ScheduledDeletion对象放在deletions缓存中

 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值