现在的位置: 首页 > 综合 > 正文

Hibernate工作流程、优点、缓存机制

2018年01月20日 ⁄ 综合 ⁄ 共 1399字 ⁄ 字号 评论关闭

1.Hibernate工作流程

  1. 启动hibernate,构建Configuration实例,初始化改实例中的所有变量。(Configuration cfg = new Configuration().configure(); )
  2. Configuration实例读取并解析配置文件hibernate.cfg.xml,将该对象的映射信息加载至内存。备:一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。
  3. 创建SessionFactory实例(SessionFactory sf = cfg.buildSessionFactory();)。备:把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。 SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration 对象关联。
  4. 由SessionFactory实例创建连接 。方法一、hibernate自行创建:Session s = sf.openSession();方法二、用户自行提供JDBC连接:Connection con=dataSource.getConnection(); Session s=sessionFactory.openSession(con); 
  5. 由Session创建事务Transation,Transaction tx = s.beginTransaction();
  6. 进行持久化操作,即访问数据库。
  7. 提交事务: tx.commit();。
  8. 关闭Session:s.close();。
  9. 关闭SessionFactory。

2.Hibernate的优点

  • Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
  • Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作。
  • Hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 
  • Hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

3.Hibernate缓存机制

3.1、缓存分类:

3.1.1、一级缓存

Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。每个Session 都有自己独立的缓存,且只能被当前工作单元访问。

3.1.2、二级缓存

SessionFactory的外置的可插拔的缓存插件。其中的数据可被多个Session共享访问。

3.2、缓存范围

3.2.1、事务范围

事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式。缓存的生命周期依赖于事务的生命周期,只有当事务结束时,缓存的生命周期才会结束。事务范围的缓存使用内存作为存储介质,一级缓存就属于事务范围。

3.2.2、应用范围

应用程序的缓存可以被应用范围内的所有事务共享访问,缓存的生命周期依赖于应用的生命周期,只有当应用结束时,缓存的生命周期才会结束。应用范围的缓存可以使用内存或硬盘作为存储介质,二级缓存就属于应用范围。

3.2.3、集群范围

在集群环境中,缓存被一个机器或多个机器的进程共享,缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致,缓存中的数据通常采用对象的松散数据形式。

抱歉!评论已关闭.