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 (线程安全)
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()都可以给缓存放入数据,和取出数据.