hiberate session
来源:互联网 发布:travian 兵工廠 計算法 编辑:程序博客网 时间:2024/06/05 10:15
在使用hibernate时,我们首先要记住的是我们操作的是session,或者说session的缓存,而不是数据库
1、sesson 脏检查:
Transcation tx=session.beginTracsaction();
User user=(User)session.get(User.class,1);
user.setName("a new name");
tx.commit(); 这里会执行一个update ,称为session脏检查
原理:当一个对象进入session后,session会对其生成一个快照, 当session清理缓存时,进行比对,从而执行sql
2、session 清理缓存的时间点
a、commit
b、如果执行查询操作时,session内对象发生变化,会清理缓存,使查询结果与数据库一致
c、flush
3、对象的四种状态
临时、持久、删除、游离
4、session的一下方法可以将持久化对象变为游离对象
a、close(); b evict();不建议 c、clear() ;多用于批量操作
5、session的save方法做了什么?
a、将save对象放入session缓存,使之变为持久化状态
b、分配OID
c、计划执行insert(清理换存时执行)
6、persist() 与 save()
save立即分配OID,persist可能要等到清理session缓存时才分配
persist在事务边界外将不计化执行sql,而save的执行insert与事务边界无关
其他类似
7、get()与load()
当数据库中不存在与OID对应对象时,load方法throw ObjectNotFoundException get方法return null
load()采用lazy=ture 除非显式配置了lazy=false ,当不适用get方法时,使用load(适用于要删除、或建立该对象与其他对象关系时)
get() 采用lazy=false ,并忽略对lzay的显式设置,适用于需要访问该对象及其属性的情况
8、session 的update 方法
将一个游离对象转为持久对象,并 “计划” 执行 一个update sql
如果将一个与已经存于session的对象的OID相同的对象放入session 将抛出 NonUniqueException
9、session 的 saveOrUpdate()
传入的对象如果之前是临时状态,执行insert 如果是游离状态,执行update
10、 cascade 属性
none : 忽略关联对象,默认
save-iupdate : save() or update() 级联的进行 save or update
persist : persist() 时 级联
merge : merge()时级联
delete : delete时级联
lock,replicate,evict,refresh : 与以上同理
all : 包含以上,不包含以下
delete-orphan : 删除所有和当前对象接触关联关系的对象
all-delete-orphan : 包含以上全部
- hiberate session
- Hiberate -- cascade
- Hiberate SchemaExport
- hiberate 体系结构
- hiberate中文
- Hiberate二级缓存
- Hiberate top n
- 关于 hiberate 的 userType
- Hiberate的配置文件
- hiberate的二级缓存详解
- Hiberate 常用注解
- hiberate分页错误
- myeclipse10配置hiberate
- Hiberate基础用法实例
- Hiberate SQL方言
- hiberate 学习笔记
- hiberate学习二 缓存
- (笔记)SSH之Hiberate
- DELPHI中完成端口(IOCP)的简单分析(1)
- java之 数字加密器
- PicSearch
- DELPHI中完成端口(IOCP)的简单分析(2)
- ZendStudio-10.5.0--SN破解工具(最新版)
- hiberate session
- Ubuntu 12.04.3 LTS配置记录
- VC++常用分配内存函数简介及比较
- 让JVM宕机
- Android中Bitmap和Drawable
- hdu oj 2029
- Delphi下使用指针的简单总结
- poj3126求一个素数到另一个素数每次变化一个数字的变化次数
- 心动C++ 情牵基础算法 II