java工作三年面试题系列-----hibernate

前言:hibernate是最开始最传统的重量级框架与之简化版的spring jpa原理和思想非常相近,由于较为复杂,而且在一些场景下不适合写一些复杂的sql,现在的项目普遍弃用了这个框架,但是基本的面试题还是要了解的

1.hibernate简介

hibernate核心思想是类与对象关系映射,让java的对象和数据库的表相关联,通过操作java对象的方式操作数据表,常见的使用方法例如save,update,get,load等方法,还有相关标签@id,@param等,查询一般使用query接口,或者使用hql的方式

2.hibernate session 对象存在的三种方式及存在意义

瞬时状态:对象再刚刚被创建出来的时候,刚刚被new出来但是未被session对象里面的方法操作,如果没有使用就会被垃圾回收机制回收

持久状态:对象被session里面的get或者load等方法操作过,并且存在于hibernate的缓存中,对象的数据会随时保存到数据库中

游离状态:java对象被session操作完成以后就进入游离状态

3.Hibernate get和load 原理及区别

最直接的区别就是每次使用get方法就要从数据库中重新获取,load方法是先从hibernate的缓存中获取如果没有然后才从数据库中获取

4.hibernate的缓存问题

hibernate分为一级缓存和二级缓存

一级缓存:一级缓存是session级别的缓存,hibernate自带的,并且一级缓存只存在一次会话中,如果session失效,则缓存被清除,如果需要清除缓存使用

 	   session.flush();让一级缓存与数据库同步;
    session.evict();清空一级缓存中指定的对象;
    session.clear();清空一级缓存中所有的对象;
 

二级缓存:
很少使用
基于应用程序级别的缓存,作用在SessionFactory范围内的, 可以跨多个session,即不同的session都可以访问缓存。 Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架!如果用户想用二级缓存,只需要在hibernate.cfg.xml中配置即可; 不想用,直接移除,不影响代码。

猜你喜欢

转载自blog.csdn.net/jiangwudidebaba/article/details/105690135
今日推荐