hibernate 数据处理

Posted 2226016500

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate 数据处理相关的知识,希望对你有一定的参考价值。

1.session到底如何进行脏检查?

当一个Dept对象加入到Session缓存中时,  Session会为Dept对象的值类型的属性复制一份快照,当Session刷新缓存时,会进行脏检查,即比较Dept对象的当前属性和他的快照,来判断Dept对象的属性是否发生了变化,

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

2.OID

用来持久化数据的唯一标识,在小配置里边的id标签中存在.

2.主键生成策略.

Uuid:32位的16进制数.

3.PO VO DTO

PO=javabean 

pojo =javabean +小配置

4.get和load()的区别?

load():没有使用对象的其他属性的时候,没有sql   延迟加载

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

是什么导致了延迟加载?

解析:是因为内存中构建了代理对象.

Handler:处理人

5.session(线程非安全) SessionFactory (线程安全)

PDF

Session是线程非安全的

主要是Sessionfactory 是借口,里边的方法全部用final修饰.

6.java对象的三种状态

持久态    

Student stu =new Student():

session.save(stu);

session中有,DB中也有

瞬时态

Student stu =new Student();

体现在DB和session中都没有

 

游离态

stu.setId(18);

session中有,DB中没有

session.close();

DB中有,session中没有

7.Session

可以简单的理解成一个Connection

Session是持久化对象的容器

如果两个get()同一个oid,那么  第二次不在sql,说明了一级缓存的存在性.

load()和get()都可以给缓存放入数据,和取出数据.

 

以上是关于hibernate 数据处理的主要内容,如果未能解决你的问题,请参考以下文章

hibernate 一对多 查询怎么去掉重复数据

怎样解决hibernate中一级缓存导致数据不能刷新

Hibernate学习笔记 --- 使用Hibernate连接数据库

hibernate读取内存的问题

hibernate如何保存blob数据

hibernate连接不上数据库