请简述hibernate工作原理?

author author     2023-05-12     738

关键词:

简述Hibernate工作原理,只要把Hibernate的大致工作流程讲清就可以。

Hibernate工作原理是Configuration读取Hibernate的配置文件和映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SessionFactory对象。

然后,多线程SessionFactory对象生成一个线程Session 对象;Session对象生成Query对象或者Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate( )等方法对PO进行加载、保存、更新、删除等操作。

在查询的情况下,可通过Session 对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些操作结果到数据库中。

扩展资料:

Hibernate它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

参考技术A 关于Hibernate的工作原理
1.Hibernate 的初始化.
读取Hibernate 的配置信息-〉创建Session Factory
1)创建Configeration类的实例。
它的构造方法:将配置信息(Hibernate config.xml)读入到内存。
一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。
2)创建SessionFactory实例
把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。
SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration 对象关联。
缓存(cache):指Java对象的属性(通常是一些集合类型的属性--占用内存空间。
SessionFactory的缓存中:Hibernate 配置信息。OR映射元数据。
缓存-大:重量级对象 小:轻量级对象
3)调用SessionFactory创建Session的方法
1】用户自行提供JDBC连接。
Connection con=dataSource.getConnection();
Session s=sessionFactory.openSession(con);
2】让SessionFactory提供连接
Session s=sessionFactory.openSession();
4)通过Session 接口提供的各种方法来操纵数据库访问。
Hibernate 的缓存体系
一级缓存:
Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。
每个Session 都有自己独立的缓存,且只能被当前工作单元访问。
二级缓存:
SessionFactory的外置的可插拔的缓存插件。其中的数据可被多个Session共享访问。
SessionFactory的内置缓存:存放了映射元数据,预定义的Sql语句。

Hibernate 中Java对象的状态
1.临时状态 (transient)
特征:
1】不处于Session 缓存中
2】数据库中没有对象记录
Java如何进入临时状态
1】通过new语句刚创建一个对象时
2】当调用Session 的delete()方法,从Session 缓存中删除一个对象时。

2.持久化状态(persisted)
特征:
1】处于Session 缓存中
2】持久化对象数据库中设有对象记录
3】Session 在特定时刻会保持二者同步
Java如何进入持久化状态
1】Session 的save()把临时-》持久化状态
2】Session 的load(),get()方法返回的对象
3】Session 的find()返回的list集合中存放的对象
4】Session 的update(),saveOrupdate()使游离-》持久化
3.游离状态(detached)
特征:
1】不再位于Session 缓存中
2】游离对象由持久化状态转变而来,数据库中可能还有对应记录。
Java如何进入持久化状态-》游离状态
1】Session 的close()方法
2】Session 的evict()方法,从缓存中删除一个对象。提高性能。少用。
参考技术B 关于hibernte的工作原理,简单说一下个人浅见:
1.配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
2.服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系
3.通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象
4.得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现
5.此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计
优点:hibernate相当于java类和数据库表之间沟通的桥梁,通过这座桥我们就可以做很多事情了本回答被提问者采纳
参考技术C Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。 另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。

请简述mybatis和hibernate的区别。

请简述MyBatis和Hibernate的区别。答:Hibernate和Mybatis都是orm对象关系映射框架,都是用于将数据持久化的框架技术。Hiberante较深度的封装了jdbc,对开发者写sql的能力要求的不是那么的高,我们只要通过hql语句操作对象即可完成对数... 查看详情

请简述在javaweb应用开发中使用hibernate操作数据库的步骤?

第一步:导入hibernate的jar包到WEB-INF的lib下第二步:在src目录下写一个hibernate.cfg.xml配置文件<?xmlversion='1.0'encoding='gb2312'?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://hibernate.sour... 查看详情

请简述hibernatesessionfactory的配置方法考试用的急等

privatestaticServiceRegistrysr; privatestaticSessionFactoryfactory; static try Configurationconfiguration=newConfiguration(); configuration.configure("resource/hibernate.cfg.xml"); sr=newServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); factory=confi... 查看详情

mybatis面试题:简述mybatis工作原理

1.首先要建立一个sqlSessionFactory:    建一个工具类,在里面引入核心配置文件    将核心配置文件转化成流文件    利用sqlSessionFactoryBuiler这个类调用build方法将材料(核心配置文件流)实例化一个sqlSessionfactor(sql... 查看详情

hibernate工作原理及其优点

hibernate简介:hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库。hibernate核心接口session:负责被持久化对象CRUD操作sess... 查看详情

hibernate和mybatis的工作原理以及区别

一、Mybatis的工作流程图(1)、原理详见: MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所... 查看详情

简述java虚拟机的工作原理

简述java虚拟机的工作原理java虚拟机包含类加载器、字节码校验器和JIT实时编辑器。类加载器用来取得从网络获取的或存于本地机器上的类文件字节码。下一步由字节码校验器检查这些类文件是否有正确的格式,以确认在运行时... 查看详情

nfs工作原理简述

1.首先用户访问网站程序,由程序在NFS客户端发出存取NFS文件的请求,NFS客户端上的RPC服务通过网络向NFS服务器的RPC服务的111端口发出NFS文件存取的询问请求。2.NFS服务器的RPC找到对应已注册的NFS端口后,通知NFS客户端的RPC服务... 查看详情

准备去找工作啦求问unity面试啥比较重要

技术知识掌握情况。1.请简述值类型与引用类型的区别2.C#中所有引用类型的基类是什么3.请简述ArrayList和List<Int>的主要区别4.请简述GC(垃圾回收)产生的原因,并描述如何避免?5.请描述Interface与抽象类之间的不同6.下列代... 查看详情

解析“60k”大佬的19道c#面试题

...om/sdflysha/p/20200325-19-csharp-interview-question-from-60k-boss-1.html请简述async函数的编译方式请简述Task状态机的实现和工作机制请简述await的作用和原理,并说明和GetResult()有什么区别Task和Thread有区别吗?如果有请简述区别简述yield的作用... 查看详情

oauth2.0授权的工作原理

...请注明出处。本文将以用户使用github登录网站留言为例,简述OAuth2.0的运作流程。假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言, 查看详情

1.java为什么能跨平台运行?请简述原理

因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。1,java代码不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的。2,java是... 查看详情

简述战略联盟的简述工作分解结构(wbs)的作用?

...解成任务,任务再分解成一项项工作 参考技术B战略联盟的简述,工作分类结构是肯定要分为上级和下级。 参考技术C战略联盟的结束工作,分解结构的作用非常的复杂。 参考技术D简述战略联盟的简述工作的分界购物的话,WPS的... 查看详情

简述rfid定义组成及工作原理

简述rfid定义组成及工作原理 RFID是RadioFrequencyIdentification的缩写,即射频识别。常称为感应式电子芯片或感应卡、非接触式卡、电子标签、电子条码,等等。    一套完整RFID系统由读写器(Reader)与电子标签(Transpon... 查看详情

hibernate简述及入门实例

一.Hibernate简述 总的概括,Hibernate是一个ORM的轻量级持久层框架,解决了对象和关系数据库中表的不匹配问题(阻抗不匹配)以及拥有开发代码不用去继承hibernate类或接口的优势(无侵入性)。hibernate框架实现使得开发人员... 查看详情

hibernate工作原理及为啥要用

Hibernate是一种ORM框架,主要作用是简化应用的数据持久层编程,不需要程序员编写大量SQL和JDBC说代码,也可以说成是对象持久化技术。所谓持久化对象(PersistentObject)即封装了数据库表记录的对象。程序中使用的对象是短暂的... 查看详情

2018.10.7理解hibernate的工作原理及其中的orm详解(代码片段)

复习hibernate框架简介j及其搭建:hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库。1.什么是框架提高我们的开发效率.可以理解成是一个... 查看详情

hibernate框架简述

文章援引自:http://www.cnblogs.com/eflylab/archive/2007/01/09/615338.htmlHibernate的核心组件在基于MVC设计模式的JAVAWEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对... 查看详情