1.Hibernate工作原理和为什么要用?

原理:

  1.读取并解析配置文件

  2.读取并解析映射信息,创建SessionFactory

  3.打开Session

  4.创建事务Transation

  5.持久化操作

  6.提交事务

  7.关闭Session

  8.关闭SessionFactory

为什么用:

  1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码

  2.Hibernate十一个基于JDBC的主流持久化框架,十一个优秀的ORM实现.他很大程度简化DAO层的编码工作

  3.hibernate使用java反射机制,而不是字节码增强程序来实现透明性.

  4.hibernate的性能非常好,因为他是一个轻量级框架,映射的灵活性很出色.它支持各种关系数据库,从一对多到多对多的各种复杂关系.

Hibernate是如何延迟加载的?

1.Hibernate2延迟加载实现:1.实体对象 2.集合(collection)

2.Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能.

Hibernate中怎样体现类之间的关系

类与类之间的关系重要体现在表与表之间的关系进行操作,他们都是对对象进行操作的,我们层析中把所有的表与类都映射在一起,他们通过配置文件many-to-one one-to-many many-to-many

Hibernate是什么?

hibernate是基于ORM对象关系映射(完成对象数据到关系数据映射的机制)实现的,坐数据持久化的工具

Hibernate   load()和get()的区别

Hibernate对于load方法

  认为该数据在数据库一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在记录,只能抛异常ObjectNotFoundEcception;所以说的load方法抛异常是指在使用该对象的数据时.由于Session中的缓存对于hibernate来说是相当廉价的资源,所以在load时会查询一下session缓存看看该id对应的对象是否还存在.不存在泽创建代理

Hibernate对于get()方法:

  get()先在一级缓存中找,没有就去二级缓存找,没有就去数据库找,再没有就返回null.

  get方法,hibernate一定要获取到真实数据,否则返回null.

get()采用立即加载方式,而load()采用延迟加载;

get()方法执行的时候,会立即向数据库发出查询语句;

而load()方法返回的是一个代理(此代理中只有一个id属性).只有等到真正使用该对象的时候才会发出sql语句

Hibernate的延迟加载和openSessionInView

  延迟加载要在session范围内,用到的时候再加载;opensessioninview实在web层谢了一个filter来打开和关闭session,这样就表示再一次request过程中session一直开着,保证了延迟加载在session中的这个前提.

Hibernate中的update()和saveOrUpdate()的区别

saveOrUpdate()做下面的事情:

  如果对象已经在本session中持久化了,不做任何事

  如果另一个与本session关联的对象拥有相同的持久化标识,抛出一个异常

  如果对象的持久化标识属性,对其调用save();

  如果对象的持久表示 表名其十一个新实例化的对象,对其调用save();

  如果对象是附带版本信息的 而且版本属性的值表明其十一个新实例化的对象,save()他,否则update()这个对象

  

简单描述Spring中使用Hibernate的方法,并且结合事物管理:

  getHibernate Template里面提供了save,update,delete,find等方法

  如果配置了声明式事务,当执行getHibernateTemplate的各种方法时,事务会自动被加载

  如果没有配置事务,那么异常操作不会真正的同步刀数据库,除非配置了Hibernate的autocommit=true

Hibernate的缓冲机制:

  内部缓存在Hibernate中又叫一级缓存,属于应用事务级缓存

  二级缓存:应用及缓存,分布式缓存

    条件:数据不会被第三方修改,数据大小在可接受范围,数据更新频率低,统一数据被系统反复使用,非关系数据

  第三方缓存的实现

Hibernate的查询方式:

  Sql,criteria,object conmptosition

  Hql:

    属性查询,参数(命名参数)查询,关联查询,分页查询,统计函数

Hibernate的面试题的更多相关文章

  1. Hibernate最全面试题

    Hibernate常见面试题 Hibernate工作原理及为什么要用? Hibernate工作原理及为什么要用? 读取并解析配置文件 读取并解析映射信息,创建SessionFactory 打开Sess ...

  2. Struts+Hibernate+Spring面试题合集及答案

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 2 ...

  3. Struts+Hibernate+Spring面试题合集及答案(转)

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring 面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 ...

  4. 高级开发层面,针对Hibernate方面面试题的总结(对其它ORM也适用)

    虽然目前mytabis用得比较多,但Hibernate相对比较容易上手,而且也有不少公司在用,所以本文就用这个举例,事实上,本文给出的面试建议也适用于各种ORM.本文摘自java web轻量级开发面试 ...

  5. Hibernate 相关面试题

    谈谈你对Hibernate的理解 1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象.建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操 ...

  6. Hibernate常见面试题

    1.什么是Hibernate的并发机制?怎么去处理并发问题? Hibernate并发机制: a.Hibernate的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务 ...

  7. Hibernate常见面试题(转)

    在Java J2EE方面进行面试时,常被问起的Hibernate面试问题,大多都是针对基于Web的企业级应用开发者的角色的.Hibernate框架在Java界的成功和高度的可接受性使得它成为了Java ...

  8. Hibernate面试题收藏

    hibenate的面试总结. 可能现在大家常常还会遇到一个些面试的时候问一些关于hibernate的问题,我个人觉得,这些东西一般做过开发的人在使用上没有任何的问题的,但是如果是要你来说就不一定能够说 ...

  9. Java面试题:Hibernate的二级缓存与Hibernate多表查询

    我们来看两个有关Java框架之Hibernate的面试题,这是关于Hibernate的常考知识点. 1.请介绍一下Hibernate的二级缓存 解题按照以下思路来回答: (1)首先说清楚什么是缓存: ...

随机推荐

  1. 百度在线笔试编程测试题(Python):整数分解成素数的积

    编程测试题: 输入一个正整数将其分解成素数的乘积,输入格式连续输入m个数,然后将这m个数分别分解,如 输入: 2 10 20 输出: 2 5 2 2 5 Python code: def primes ...

  2. windows下登录lunix服务器

    在微信项目中,负责发布,我就把我用到的记录一下.有两种登录方式,看你要做什么操作. 1.SecureCRT 支持命令行操作.(主要是发布程序) 调试.微信公众号规定要有服务器的网址,一般公司的都是内网 ...

  3. nRF24L01芯片控制——迈向无线的第一步

    nRF24L01芯片是一款专供单片机的射频收发芯片.工作于2.4GHz~2.5GHz ISM频段.融合了shockburst技术. 我先列出该芯片的硬件参数资料: 至于每个引脚的具体用途,可以参见技术 ...

  4. Get the current user permission level on a list item with ecmascript 分类: Sharepoint 2015-07-14 14:13 7人阅读 评论(0) 收藏

    To Check current users permissions using Ecmascript\Javascript client object model SharePoint 2010. ...

  5. 第五篇.Bootstrap 排版

    使用bootstrap的排版特性可以创建标题,段落,列表及其它内联元素. 标题:bootstrap中定义了从h1-h6的六种标题样式. 内联子标题: 如果需要向任意一个标题添加一个子标题,只需要加上& ...

  6. solaris tar 命令exclude使用

    压缩时需要排除指定目录,不知道什么原因在solaris中 tar cvf a.tar a --exclude=a/b/log --exclude = a/c/mm7log不生效, 最后使用了如下方法 ...

  7. Service Broker应用(1):简介、同server不同DB间的数据传输

    简介:SQL Server Service Broker,以下简称SSB,是一种完全基于MSSQL数据库的数据处理技术,为短时间内处理大量数据提供了一种可靠.稳定.高效的解决方案.一次同步的数据最大可 ...

  8. 一次线上http接口调用不通相关的解决过程

    2016-05-25 08:58:34 昨天线上小白系统因为调用外部http接口,超时不释放,导致页面反应很慢,时间一长,报502错误. 上网查了下,502错误是因为服务对于客户的请求没有得到及时的反 ...

  9. python2.7安装matplotlib遇到的问题及解决方法

    python2.7下import matplotlib报错 第一个报错是:缺少这个pyparsing-2.1.4.win32-py2.7.exe 直接下载安装就行 第二个报错是:缺少cycler 这个 ...

  10. DOM操作 ——如何添加、移除、移动、复制、创建和查找节点等。

    DOM操作 --如何添加.移除.移动.复制.创建和查找节点等. (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个 ...