Hibernate的Session详解

 

       Sesison接口是Hibernate中一个最重要的持久化管理器。它能完成对持久化类实例的基本CRUD操作、执行条件查询、事物控制、持久化对象的生命周期等。

单线程,非共享的对象。线程不安全,在设计软件架构时,应避免多个线程共享同一个Session实例。

Session实例是轻量级的,它的创建和销毁不需要消耗太多的资源。可以为每个请求分配一个Session实例,在每次请求过程中及时创建和销毁Session实例。

Session有一个缓存,它存放当前工作单元加载的对象。Session的缓存被称为Hibernate的第一级缓存。

Session的基本方法:save(),get(),load(),delete(),update(),saveOrUpdate(),merge();

1、          save():为瞬时对象分配唯一的OID并它加入到当前Session的缓存中,使它变为持久化对象,

2、    get():根据给定的OID返回一个持久化实例。先检查当前Session缓存中是否存在这个OID标示持久化对象,不存在就检查二级缓存,还不存在就从数据库表中获取,直至查到返回!

3、    load():先检查当前Session缓存中是否存在这个标示符OID持久化实例,不存在检查二级缓存,如果还不存在就返回代理对象(不会检查数据库是否存在);

4、    delete():先把传入的实例持久化,再用Session计划执行delete语句;

5、    update():先把重附对象加入到Session的缓存中,变为持久化对象,当清除Session缓存时再执行update语句!

6、    saveOrUpdate():Hibernate自动判断当前Session的状态,如果持久化就执行save(),托管就执行update();

7、    merge():将传入实例的状态复制到具有相同标示符的持久化实例上,并返回该实例!

事物控制:session.beginTransaction(),开启事务;

                  session.commit (),提交事务:

 

posted @ 2011-12-08 21:38  Springside4  阅读(191)  评论(0编辑  收藏  举报