`
wuxiaozeng2440
  • 浏览: 27279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate简介

 
阅读更多

    Hibernate是一个对象关系映射框架,本质上是一个提供数据库服务的中间件,相当于java类和数据库表之间沟通的桥梁。

    Hibernate使用了J2EE架构中的如下技术:JDBC、JTA(Java事务API)、JNDI(Java Naming and Directory Interface,Java命名和目录接口)。其中JDBC是一个支持关系数据库操作的一个基础层;它与JNDI和JTA一起结合,使得Hibernate可以方便地集成到J2EE应用服务器中去。java程序员可以随心所遇的使用面向对象的思维来操作数据库。

 

Hibernate 的核心接口一共有5 个,分别为:Session 、SessionFactory 、Transaction 、Query(Criteria) 和Configuration 。

Configuration 接口:配置Hibernate,根据其启动hibernate,创建SessionFactory 对象;

SessionFactory 接口:初始化Hibernate,充当数据存储源的代理,创建session 对象,sessionFactory 是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级、二级缓存;

Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存;

Transaction 接口:管理事务;

Query 和Criteria 接口:执行数据库的查询。

 

   下面是hibernate的工作机制。

   1.配置好hibernate的配置文件和与类对应的配置文件后,启动服务器

   2.服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系

   3.通过实例化的Configeration对象就可以建立sessionFactory实例(config.buildSessionFactory())

   4.通过sessionFactory实例可以创建session对象(sessionFactory.openSession())

   5.开启事务(session.beginTransaction())

   6.对数据库进行增删改查操作。

   7.提交事务(session.getTransaction().commit())

   8.关闭session;

   9.关闭sessionFactory;

 

   Hibernate缓存管理

   Hibernate提供了两级Cache,第一级别的缓存是Session级别的缓存,只缓存实体,生命周期和session一致。它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。

     当应用程序调用Session的save()、update()、saveOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。缓存介质为内存。由于内存容量有限,必须通过恰当的检索策略和检索方式来限制加载对象的数目。

    二级缓存:sessionFactory缓存,也叫进程级的缓存,使用第3方插件实现的,也缓存实体,生命周期和sessionFactory一致,可以在单个类或类的单个集合的粒度上配置第二级缓存。如果类的实例被经常读但很少被修改,就可以考虑使用第二级缓存。只有为某个类或集合配置了第二级缓存,Hibernate在运行时才会把它的实例加入到第二级缓存中。 第二级缓存的物理介质可以是内存和硬盘,因此第二级缓存可以存放大量的数据,数据过期策略的maxElementsInMemory属性值可以控制内存中的对象数目。管理第二级缓存主要包括两个方面:选择需要使用第二级缓存的持久类,设置合适的并发访问策略:选择缓存适配器,设置合适的数据过期策略。常用的缓存插件EhCache

 

   Hibernate与延迟加载

   延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载和对属性的延迟加载,下面我们就分别介绍这些种类的延迟加载的细节。

     对象的延迟加载其原理实际用的是代理模式。Hibernate中通过使用CGLIB,来实现动态构造一个目标对象的代理类对象,并且在代理类对象中包含目标对象的所有属性和方法,而且所有属性均被赋值为null。延迟逻辑在代理对象里实现。

     Hibernate中对集合类型进行缓存时,是分两部分进行缓存的,首先缓存集合中所有实体的id列表,然后缓存实体对象,这些实体对象的id列表,就是所谓的数据索引。当查找数据索引时,如果没有找到对应的数据索引,这时就会一条select SQL的执行,获得符合条件的数据,并构造实体对象集合和数据索引,然后返回实体对象的集合,并且将实体对象和数据索引纳入Hibernate的缓存之中。另一方面,如果找到对应的数据索引,则从数据索引中取出id列表,然后根据id在缓存中查找对应的实体,如果找到就从缓存中返回,如果没有找到,在发起select SQL查询。

 

   优化Hibernate

1、使用一对多的双向关联,尽量从多的一端维护。

2、不要使用一对一,尽量使用多对一。

3、配置对象缓存。

4、表字段要少,表关联不要怕多,有二级缓存。

分享到:
评论

相关推荐

    hibernate简介及特例

    【Hibernate简介及特性】 Hibernate是一个Java开发中的对象关系映射(ORM)框架,它提供了将数据库操作转化为面向对象的方式,让开发者可以更加便捷地进行数据持久化操作。Hibernate基于JDBC,但对JDBC进行了封装,...

    Hibernate简介与快速入门

    ### Hibernate简介与快速入门 #### 一、Hibernate概述 Hibernate是一种强大的开源对象关系映射(ORM)框架,它提供了一种高效的方式将面向对象的数据模型映射到关系型数据库的表结构中。Hibernate最初由Gavin King...

    [VIP][强化]J2EE第一期 Hibernate专题 第一讲 Hibernate简介源码

    【J2EE与Hibernate简介】 在Java企业级应用开发领域,J2EE(Java 2 Platform, Enterprise Edition)是一个标准的平台,它提供了一个统一的框架来构建分布式、多层的应用程序。J2EE涵盖了服务器端组件模型、数据库...

    hibernate简介及优缺点

    一.持久化:将内存中的瞬时态数据保存成数据库中持久态数据的操作 1.瞬时态:以new命令实例化后从未用session将其与数据库关联(保存)过的... 2.Hibernate映射文件:Hibernate映射文件是Hibernate与数据库进行持久化的桥梁

    Hibernate简介.doc

    **Hibernate 概述** Hibernate 是一个开放源代码的 Java 库,它提供了对象关系映射(ORM)解决方案,使得开发者可以使用面向对象的方式来操作数据库,而无需关心底层的 SQL 语句。ORM 解决了传统应用程序中面向对象...

    移动商务应用软件开发第8章Hibernate简介及功能实现.ppt

    移动商务应用软件开发第8章Hibernate简介及功能实现.ppt

    hibernate知识简介.ppt

    5. **Hibernate简介** Hibernate 是最受欢迎的ORM框架之一,因其灵活性和高效性而备受青睐。它提供了丰富的API和配置选项,支持多种数据库,包括事务管理、第二级缓存等功能。由于其活跃的社区支持和持续的更新,...

    Hibernate入门到精通

    Hibernate 简介 Hibernate 是一个开源的Java Persistence Framework,它提供了一种对象关系映射的解决方案,帮助开发者轻松地访问和操作关系数据库。Hibernate 的主要特点是:支持多种数据库管理系统、提供了高效的...

    JAVA学习资料-Hibernate简介.doc

    **核心接口简介** 1. **Session接口**:Session是与数据库交互的主要接口,它负责执行持久化对象的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。由于Session不是线程安全的,所以在多线程...

    JAVA Hibernate 简介 ppt

    本人所有资源完全原创,此文可以作为新手入门之砖,也可以作为老人的茶余饭后。欢迎下载。联系我:shansun123@126.com

    hibernate权威整理文档!

    一、Hibernate简介 Hibernate是一个强大的ORM(Object-Relational Mapping)框架,它致力于简化Java应用程序的持久层开发。通过Hibernate,开发者可以将Java对象映射到数据库表,从而实现对数据库的操作,而无需直接...

    教育移动商务应用软件开发第8章Hibernate简介及功能实现.ppt

    【教育】移动商务应用软件开发第8章主要探讨的是Hibernate框架在JavaEE环境下的应用,这是构建现代企业级移动商务应用程序的重要技术之一。本章旨在让学习者掌握使用Hibernate进行数据持久化的技能,以及理解软件...

    hibernate 重点知识原创

    一、hibernate 简介 Hibernate 是一个流行的 Java 应用程序框架,主要用于简化对象关系映射(ORM)的过程。它允许开发者使用面向对象的方式来操作数据库,通过自动映射数据库表为 Java 对象,从而避免了手动编写 ...

    基于hibernate的简单留言本

    【hibernate简介】 Hibernate是一个开源的Java框架,主要用于简化企业级应用中的对象关系映射(Object-Relational Mapping,ORM)。它允许开发者将数据库操作转换为对Java对象的操作,从而降低了开发人员处理SQL和...

    hibernate实现动态SQL查询

    一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。通过对象-关系映射(ORM),Hibernate可以自动将Java对象转化为数据库中的记录,并反之。这样,开发者无需编写大量...

    hibernate系列(一)hibernate入门

    Hibernate简介** Hibernate是由 Gavin King 创建的一个开源项目,它实现了JPA(Java Persistence API)规范,提供了一种在Java应用中持久化对象的机制。通过Hibernate,我们可以避免编写大量的SQL语句,而是通过...

Global site tag (gtag.js) - Google Analytics