博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态
阅读量:7099 次
发布时间:2019-06-28

本文共 950 字,大约阅读时间需要 3 分钟。

主键生成策略

sequence 数据库端

native 数据库端

uuid  程序端 自动赋值 生成的是一个32位的16进制数  实体类需把ID改成String 类型

assigned  程序端 需手动给值

 

 

 2. load()和gat()的区别

Load()没有使用对象的其他属性的时候,没有SQL 延迟加载  因为代理对象的出现 才导致延迟加载。

 

 

   

Get()没有使用对象的其他属性的时候,也生成了SQL 立即加载

 java对象的三种状态

持久态

Student stu=new Student(); Session.save(stu); Session有的,DB中也会有。

游离态

stu.setId(1); 手里有OID,但是DB中没有 DB中,session没有的瞬时态

 

瞬时态

Student stu=new Student

体现:在session中以及DB都没有

 

脏检查(如图所示)

脏检查及刷新缓存机制

   脏检查:当事务提交时,Hiberante会对Session中持久状态的对象进行检测,判断对象的数据是否发生了改变

   依据:

   为什么要进行脏检查?

   解析:如果对象发生了改变,就需要将改变更新到数据库中,以确保内存中的对象与数据库中的数据保持一致。

   如何脏检查?

 解析:当一个Dept对象被加入到Session缓存(有人又称为 一级缓存  后者是内部缓存)中时,Session会为Dept对象的值类型的属性复制一份快照

 当Session刷新缓存时,会先进行脏检查,即比较Dept对象的当前属性与它的快照,来判断Dept对象的属性是否发生了变化。

 如果发生了变化,Session会根据脏对象的最新属性值来执行相关的SQL语句,将变化更新到数据库中。

   Session具有一个缓存,可以管理和跟踪所有持久化对象,对象和数据库中的相关记录对应。

 

转载于:https://www.cnblogs.com/lizeyang/p/5817789.html

你可能感兴趣的文章
解决AD9中“......has no driver”的问题
查看>>
通过按键实现LED灯的亮灭(含两种情况)
查看>>
Hibernate入门_增删改查
查看>>
C#中常用接口介绍
查看>>
swift 纯代码自定义控件
查看>>
使用Groovy的sql模块操作mysql进行多种查询
查看>>
解决mysql 主从数据库同步不一致的方法
查看>>
字符编码笔记:ASCII,Unicode 和 UTF-8
查看>>
Stack
查看>>
[BZOJ3631][JLOI2014]松鼠的新家(树链剖分)
查看>>
libgdx游戏引擎开发笔记(四)文字显示BitmapFont
查看>>
JavaScript和Webservice实现联动
查看>>
CSC
查看>>
k8s dockerk个人学习(1)
查看>>
pycharm 配置 anaconda ,以及anaconda的使用
查看>>
终端命令和环境变量
查看>>
Android 如何从系统图库中选择图片
查看>>
Tomcat容器,Servlet容器,Spring容器的包含关系
查看>>
第六章 属性文法和语法制导翻译
查看>>
java----数据结构与算法----JavaAPI:java.util.LinkedList、ArrayList、Vector/Stack
查看>>