瞬时对象 new delete 数据库没对应

持久对象 get load find iterate save saveorupdate update lock

离线对象 evict close clear 数据库有对应

 

session级缓存叫一级缓存,save后便纳入管理close后释放

 

persistent对象如果修改会发出update语句,但是是在commit时发出的

当属性发生改变,hibernate会自动和数据库同步

 

Name:name

Name:name1

save和属性变化会生成两个独立的对象

commit时会进行脏数据检查,save会发出insert,修改后会对比新的和原来的不一样,所以会发出update语句。如果前后两个一样不会发update语句

 

detached对象update方法会变成persistence状态再commit後会发出update语句

 

get通过id返回的就是对象是persistence状态,发出查询语句,查不到不会抛异常,返回null

load返回的是对象代理,并不发出SQL,Lazy的,是等到使用到的时候(user.getName)才发出查询,找不到抛异常

 

可以手动构造detached对象

 

delete方法会发出delete语句使得对象变成transient状态

分页:根据方言生成不同的分页sql语句

           Query query = session.createQuery("from User");

          

           query.setFirstResult(0);

           query.setMaxResults(2);

           query.list();

posted on 2009-05-06 21:40  IT Person  阅读(263)  评论(0编辑  收藏  举报