Hibernate重要对象详解
来源:优易学  2009-11-26 17:25:09   【优易学:中国教育考试门户网】   资料下载   IT书店
全站文章页内部300*250广告位

  ★→→SessionFactory (org.hibernate.SessionFactory)

  包含已经编译的映射(mappings),是制造session的工厂,可能含有一些可以在

  各个事务(transaction)之间共享的数据

  (1) SessionFactory的缓存

  可分为两类:内置缓存和外置缓存。

  SessionFactory的内置缓存中存放了Hibernate配置信息和映射元数据信息、同时也缓存了Hibernate自动生成的SQL语句等;

  SessionFactory的外置缓存是一个可配置的缓存插件,在默认情况下,SessionFactory不会启用这个缓存插件。外置缓存

  能存放大量数据库数据的拷贝,外置缓存的物理介质可以是内存或者硬盘。

  (2) 只有一个数据存储源,只需创建一个SessionFactory

  SessionFactory就是个重量级对象,如果应用只有一个数据存储源,只需创建一个SessionFactory实例,

  因为随意地创建SessionFactory实例会占用大量内存空间。

  但是当你的项目要操作多个数据库时,那你必须为每个数据库指定一个SessionFactory。

  (3) Configuration的其他用法

  Configuration的configure ()方法还支持带参数的访问方式,你可以指定hbm.xml文件的位置,而不是使用默认的classpath

  下面的hibernate.cfg.xml这种方式,例如:

  Configuration cfg = new Configuration().configure("myexample.xml");

  ★★→→Configuration

  Configuration是hibernate的入口,在新建一个Configuration的实例的时候,hibernate会在classpath里面查找

  hibernate.properties文件,如果该文件存在,则将该文件的内容加载到一个Properties的实例GLOBAL_PROPERTIES里面,

  如果不存在,将打印信息:hibernate.properties not found

  然后是将所有系统环境变量(System.getProperties())也添加到GLOBAL_PROPERTIES里面。如果hibernate.properties文件存在,

  系统还会验证一下这个文件配置的有效性,对于一些已经不支持的配置参数,系统将打印警告信息。

  (1) 作用---实现对Hibernate进行配置

  Configuration接口的作用是对Hibernate进行配置,以及对它进行启动

  在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。

  根据Configuration对象创建一个SessionFactory对象

  为了能创建一个SessionFactory对象,你必须在Hibernate初始化时创建一个Configuration类的实例,并将已写好的映射文件交由它处理。

  这样,Configuration对象就可以创建一个SessionFactory对象,当SessionFactory对象创建成功后,Configuration对象就没有用了,你可以简单地抛弃它。

  (2) 它是启动hibernate的对象

  虽然Configuration接口在整个Hibernate项目中只扮演着一个很小的角色,但它是启动hibernate时你所遇到的第一个对象。

  (3) Configuration config = new Configuration();

  config.addClass(Customer.class);

  sessionFactory = config.buildSessionFactory();

  或者:

  使用方法链编程风格,可以改写为:

  sessionFactory = new Configuration().buildSessionFactory().addClass(Customer.class).buildSessionFactory();

  注意:

  方法链编程风格能使应用程序代码更加简捷。在使用这种编程风格时,最好把每个调用方法放在不同的行,否则在跟踪程序时,无法跳入每个调用方法中。

  ★★★→→Session(org.hibernate.Session)

  (1) 单线程的,短寿命的对象,代表了一次会话的过程。实际上是把一个JDBC Connection打包

  了,它可以包含一些持久化对象的缓存

  看作介于数据连接与事物管理一种中间接口.

  在hibernate的设计者中.他们将session看作介于数据连接与事物管理的一种中间接口

  或者想象成一个持久对象的缓冲区

  hibernate能检测到这些持久对象的改变,并及时刷新数据库

  (2) 每一个Session实例和一个数据库事务绑定

  通常将每一个Session实例和一个数据处理库事务绑定

  就是说,每执行一个数据库事务(操作),都应该先创建一个新的Session实例.

  如果事务执行中出现异常,应该撤消事务.

  不论事务执行成功与否,最后都应该调用Session的close()方法,从而释放Session实例

  占用的资源.

  (3) 如何获得Session对象

  首先创建SessionFactory对象

  应用服务器如果访问多个数据源时,则应该产生多个SessionFactory;

  但是仅仅为了服务与某个请求时,不要创建一个新的SessionFactory,因为创建

  SessionFactory需要消耗大量的资源.

  然后根据SessionFactory再创建Session对象

  例如:::::

  ----------------------------------------------------------------------------------

  Session session=sessionFactory.openSession();

  Transaction tx;

  try{

  tx=session.beginTransaction();//开始一个事务

  .......//执行事务

  tx.commit();

  }catch(Exception e){//如果出现异常就撤消事务

  if(tx!=null)

  tx.rollback();

  throw e;

  }

  finally//不管事务执行成功与否,最后都关闭Session并且放在finally中以提高安全性

  session.close();

  -----------------------------------------------------------------------------------

  (4) Sessin 接口中的常用方法

  基本的CURD操作(save()方法:把Java对象保存数据库中、update()方法:更新数据

  库中的Java对象、delete()方法:把Java对象从数据库中删除、load()方法:从数据

  库中加载Java对象 和find()方法:从数据库中查询Java对象);执行查询;

[1] [2] 下一页

责任编辑:小草

收藏此页】【 】【打印】【回到顶部
计算机文章页底部500*200广告
文章搜索:
 相关文章
计算机底部580*90广告
文章页右侧第一330*280广告
计算机文章页资讯推荐
热点资讯
文章页330尺寸谷歌广告位
热门课程培训