1 get方法和load方法查询时的区别:

  如果在缓存中没有找到相应的对象,get会直接访问数据库并返回一个完全初始化的对象,过程中可能涉及多次数据库调用;而load会返回一个代理对象,只有在对象getId()之外的方法被调用时才会真正的去访问数据库,在某些情况下大幅度提高了性能

  如果数据库中没有数据,get返回null;load调用某个属性时发生异常(org.hibernate.ObjectNotFoundException)

  get不支持延迟加载;load支持延迟加载

2 openSession和getCurrentSession的区别:

  openSession是new一个新的session并返回;getCurrentSession会先查看当前线程(ThreadLocal)中是否绑定了session,如果有直接返回,没有就先创建再返回

  getCurrentSession使用ThreadLocal实现线程session的隔离

  openSeession在事务提交时需要手动关闭session,getCurrentSession是自动关闭

3 Hibernate的缓存有哪些?缓存的作用分为几类?

  Hibernate缓存分为一级缓存、二级缓存和查询缓存

  一级缓存又称session缓存,由于session对象的生命周期通常对应一个数据库事务,因此一级缓存是事务范围内的缓存;一级缓存是不可关闭的,在一级缓存中,持久化类的每个实例都有一个唯一的OID

  二级缓存是sessionFactory缓存,又分为内置缓存和外置缓存。内置缓存时Hibernate自带的,不可关闭,是只读缓存,用来存放元数据和预定义SQL语句;外置缓存是一个可配置的缓存插件,默认sessionFactory没有启用,外置缓存中存放数据库数据的复制。sessionFactory对象的生命周期和应用程序的整个进程相对应。二级缓存是可选的,可以在每个类或每个集合的粒度上配置二级缓存

  查询缓存,是Hibernate为查询结果提供的,依赖于二级缓存

4 Hibernate缓存的作用分为几类?

  事务范围:每个事务都有自己的缓存,缓存内的数据不会被多个事务并发访问;例如一级缓存,session内的数据只能被当前事务访问,不可跨session

   进程范围:进程内的事务共享缓存,进程结束,缓存结束;例如二级缓存,可跨session访问

   集群范围:缓存被一个或多个机器上的多个进程共享;二级缓存也可以作为集群范围的缓存

5 Hibernate的检索方式有哪些?

  HQL检索

  QBC检索

  本地SQL检索

6 Hibernate的查询方式有哪些?

  SQL:本地SQL查询
  QBC:Query By Criteria(使用面向对象的方式查询)
    全表查询
    条件查询  
    分页查询
    查询排序
    集合查询
    投影查询
  HQL:Hibernate Query Language
    全表查询
    别名查询
    条件查询 
    具名查询 
    分页查询
    查询排序
    集合查询
    投影查询

7 Hibernate中session的清理和清空的区别:

  清理缓存调用session.flush();清空缓存调用session.clear()

  session清理缓存是按照缓存中对象的状态的变化来同步更新数据库,但不清空缓存;清空是把session的缓存置空,但不同步更新数据库

8 如何调用原生SQL?

  Hibernate4中官方推荐使用session.doWork(Interface)进行jdbc操作

9 Hibernate中如何实现类之间的关系?

  类与类的关系主要体现在表与表之间的操作,他们都是对对象进行操作,程序中将所有的表和类映射在一起,通过one-to-one、one-to-many、many-to-one、many-to-many进行声明

10 Hibernate中如何进行性能优化?

    对象的三种状态

    一级缓存和快照

    延迟加载策略

    抓取策略

    整合c3p0连接池

    二级缓存

Hibernate 零散知识点的更多相关文章

  1. ACM个人零散知识点整理

    ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ...

  2. Android 零散知识点整理

    Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ...

  3. Android零散知识点积累

    本文仅在记录android开发中遇到的零散知识点,会不断更新... 目录 .隐藏系统标题栏 .图片尺寸及屏幕密度 3.获取顶部状态栏高度 1.隐藏系统标题栏 1)在资源文件styles.xml中定义样 ...

  4. JavaScript 零散知识点1 (正则表达式+定时器+hover)

    1.clear:both清楚浮动影响//css中 2.正则表达式 search方法 :指明是否存在相应的匹配,如找到一个返回一个整数值,表明这个匹配距离字符串开始的偏移位置,如果没有找到匹配返回-1f ...

  5. 零散知识点总结(持续更新……)

        这篇博客用于记录平时学习中遇到的零散的知识点,它们不适于单独写一篇长博客,在这里记录下来一是为了增强记忆,二是为了方便复习总结.这篇博客会持续更新... 一.JS数据类型及类型判断 1. JS ...

  6. Python学习 过程中零散知识点的总结

    自学资料比较零碎,本文是对在Python学习过程中积累的零零散散的知识点的总结 ============================================================ ...

  7. Hibernate进阶知识点必备

    hibernate.cfg.xml的常用的配置 hibernate.show_sql:是否把Hibernate运行时的SQL语句输出到控制台,编码阶段便于测试,为true的好 -hibernate.f ...

  8. hibernate重要知识点总结

    一.使用注解方式-----实体和表之间的映射 配置spring的applicationContext.xml文件: <bean id="sessionFactory" cla ...

  9. struts2、hibernate的知识点

    以下内容是我在复习struts2.hibernate和spring的时候记下得到,部分书上找不到的内容来自网络 以下是网络部分的原文网站: http://blog.csdn.net/frankaqi/ ...

随机推荐

  1. js中的转换方法

    1.var colors =['red','blue','green']; console.log(colors.toString()); // red,blue,green 总结:toString( ...

  2. magento如何改变首页的布局

    打开MAGENTO_INSTALLED_DIR/app/design/frontend/default/default/layout/page.xml 找到名字为'root'的block定义 < ...

  3. OK335xS UART device registe hacking

    /************************************************************************* * OK335xS UART device reg ...

  4. java语法基础练习

    1.阅读示例: EnumTest.java,并运行.分析结果 代码: public class EnumTest { public static void main(String[] args) { ...

  5. NASSA’s Robot

    NASSA的机器人降落到了火星,降落的地方可以用X-Y坐标表示.机器人最开始在(0, 0).由于传输问题,部分指令可能会混淆,现在给出确定的命令与未知命令,请帮忙确认机器人的X.Y坐标最小最大值分别是 ...

  6. Flask第31课——include标签

    我们在上一节代码基础上增加一些代码,样式: 文件名index.html,代码: {% from 'macros/forms.html' import input %} <!DOCTYPE htm ...

  7. ballerina 学习 三十 扩展开发(一)

    ballerina 主要是分为两大类 基于ballerina 语言开发的,一般是客户端的connector 使用java语言开发的(类似的基于jvm的都可以),一般是注解以及进行构件生成 baller ...

  8. FastAdmin 将会员模块升级为基础模块的升级指导

    说明 FastAdmin 于 2018-01-19 将会员模块升级为基础模块. 因为有数据库改动,所以需要对旧的数据库进行升级,不然没有办法使用和显示. 升级流程 git 合并代码 略 导入数据表 D ...

  9. 【转】每天一个linux命令(20):find命令之exec

    原文网址:http://www.cnblogs.com/peida/archive/2012/11/14/2769248.html find是我们很常用的一个Linux命令,但是我们一般查找出来的并不 ...

  10. yarn 知识点

    yarn 与 npm 功能对应表格: 命令 yarn npm 初始化 yarn init npm init 安装项目所有包(注意) yarn npm install 添加 dependencies y ...