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. 深度分析:Android中Mms设置页面更改短信中心号码流程

    相关控件初始化方法:showSmscPref private void showSmscPref() {         int count = MSimTelephonyManager.getDef ...

  2. Foundation--结构体

    一,NSRange typedef struct _NSRange { NSUInteger location; NSUInteger length; }NSRange; 这个结构体用来表示事物的一个 ...

  3. Android的界面设计工具——DroidDraw

    软件名称:DroidDraw 软件大小:489KB(Windows版本) 支持系统:Mac OS X/Windows/Linux 下载地址:http://code.google.com/p/droid ...

  4. c++ 中 char 与 string 之间的相互转换问题

    第一部分: 将  char *    或者    char []   转换为  string 可以直接赋值,转换. 第二部分: 将   string   转换为 char *    或者    cha ...

  5. 如何释放vector变量

    std::vector<cv::Point> probp; std::vector<int> plabel; plabel.clear(); std::vector<in ...

  6. win10系统如何进入BIOS模式

    前言 安装双系统时,一般需要设置一些BOOT的选项值,比如security boot的选项.以前都是重启之后按F2或者F12等进入BIOS模式的, 但是博主按照这种方式没有正确进入,本文就针对这一问题 ...

  7. stm32 SPI介绍和配置

    SPI是一种高速的,全双工同步的通信总线,在芯片管脚上占用了四根线,节约了芯片的管脚,同时为PCB的布局节省了空间,提供了方便,因此越来越多的芯片集成了这种通信协议,STM32也就有了SPI接口. 有 ...

  8. CTF竞赛(简介)

    一.解体模式(Jeopardy) 可通过互联网或现场网络参与,解决网络安全技术挑战题目,并以分值和时间排名. 题目主要包括:逆向,漏洞挖掘与利用,web渗透,密码,取证,隐写,安全编程 二.攻防模式( ...

  9. 2018-2019-2 20165212 《网络对抗技术》Exp3 免杀原理与实践

    2018-2019-2 20165212 <网络对抗技术>Exp3 免杀原理与实践 一.实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion ...

  10. java二叉树排序实现

    原创:转载请注明出处 目的:想用java实现二叉树排序算法 思想:利用java中面向对象的思想,即: Tree:类 树根Tree:root //static所属于每一个Tree 左节点Tree:lef ...