请简述Hibernate工作原理?

作者&投稿:宥常 (若有异议请与网页底部的电邮联系)
HIbernate 的工作原理是什么?~

关于hibernte的工作原理,简单说一下个人浅见:
1.配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
2.服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系
3.通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象
4.得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现
5.此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计
优点:hibernate相当于java类和数据库表之间沟通的桥梁,通过这座桥我们就可以做很多事情了

struts2 是控制业务逻辑,典型的MVC设计模式。
hibernate 做持久化的,也就是存取东西的。
spring 面向切面编程,依赖注入和ioc,可以理解为在哪里,加什么。也是MVC设计模式,不过光用spring一个也是可以的,有springmvc,springdata等。

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,完成数据持久化的重任。



关于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()方法,从缓存中删除一个对象。提高性能。少用。

关于hibernte的工作原理,简单说一下个人浅见:
1.配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
2.服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系
3.通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象
4.得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现
5.此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计
优点:hibernate相当于java类和数据库表之间沟通的桥梁,通过这座桥我们就可以做很多事情了

Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。 另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。

...struts hibernate spring?我想知道是上班时候用的最多的哈,_百度知...
答:上班现在用的多的是struts2 和hibernate spring 但是三个框架自动导入的文件太多 , 要学会手动导包 还有要会ajax 因为小公司不可能一个人一个模块 有可能整个项目都要做(新手进小公司好进,锻炼人)

java工程师个人年终工作总结范文(精选5篇)
答:二、遵守各项规章制度,认真工作,端正态度,使自己素养不断得到提高。 爱岗敬业的职业道德素质是每一项工作顺利开展并最终取得成功的保障。在这5个多月的时间里,我能遵守公司的各项规章制度,兢兢业业做好本职业工作,5个多月来从未迟到早退,用满腔热情积极、认真地完成好每一项任务,认真履行岗位职责,平时生活中团结同事...

java工作和技能有哪些方向?
答:Java的工作方向我认为由两个因素决定,一是个人意识,也就是个人的求职意愿;二是技术能力,所谓“没有金刚钻,不揽瓷器活”说的就是这个道理。职位永远同个人业务能力相匹配,同样,只有在自己喜欢、擅长的领域,才能将个人价值和企业效益最大化。关于Java工作方向的建议,我主要从知识掌握情况和技能胜任...

和电脑有关的工作有哪些?
答:俗称“码农”。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、...

程序员年中工作总结及下半年工作计划
答:不得不惊叹,例如我没有事的时候也因该提醒自己学习一些JBoss、Spring、Hibernate 等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。试着研究一下jar 包,知道每个jar 的功能和实现的 方法 ,免得自己以后的工作遇到一些让你不明就里、一头雾水的问题,因为,很多...

程序员试用期工作总结5篇
答:作为一名刚参加工作一年多的 毕业 生,初来公司,曾经很担心不知该怎么与人共处,该如何做好工作;但是公司宽松融洽的工作氛围、团结向上的 企业 文化 ,让我很快完成了从普通职员向高效职员的转变。亲爱的读者,我为您准备了一些程序员 试用期 工作 总结 ,请笑纳! 程序员试用期工作总结1 我是一名程序员,在过去的...

开发工程师的岗位职责
答:3、熟练使用Spring、Hibernate等主流框架; 4、熟悉oracle数据库,和版本控制工具 5、熟练使用Eclipse或jbuilder等java开发工具; 6、具有良好的学习能力,具有强烈的工作责任心、有良好的沟通能力和团队合作精神。 开发工程师的岗位职责 篇15 职位描述: 1、负责公司现有HIS产品的二次开发工作; 2、负责公司现有EMR产品的...

如何学习spring的事务管理
答:Spring是SSH中的管理员,负责管理其它框架,协调各个部分的工作。今天一起学习一下Spring的事务管理。Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式...

想从事JAVA方面的工作,需要学习那些学科,最好也告诉我最好看什么书籍或...
答:Action的线程安全 I18N 如何切换语言环境 Struts异常处理机制 程序处理 自动处理 自定义异常处理器 Struts的多模块配置 7:XML (XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程可以暂时扔在一边)8:Hibernate OR Mapping原理 Hibernate基础开发步骤 Hibernate基本接口(重点Session)...

java 要学到什么程度才能出去公司工作?比如至少要做出那些项目?_百度...
答:8:Hibernate OR Mapping原理、Hibernate基础开发步骤、Hibernate基本接口(重点Session)普通属性映射、关联关系映射 9:Spring IOC/DI Spring配置 Spring架构 AOP及Spring AOP 声明式事务(AOP)Spring + Hibernate Spring支持Web Scope 10:EJB3.0 J2EE架构基础(JTA JMS等)EJB基础(地位及基本理论、分类...