Hibernate 零散知识点
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的查询方式有哪些?
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 零散知识点的更多相关文章
- ACM个人零散知识点整理
		ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ... 
- Android 零散知识点整理
		Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ... 
- Android零散知识点积累
		本文仅在记录android开发中遇到的零散知识点,会不断更新... 目录 .隐藏系统标题栏 .图片尺寸及屏幕密度 3.获取顶部状态栏高度 1.隐藏系统标题栏 1)在资源文件styles.xml中定义样 ... 
- JavaScript 零散知识点1 (正则表达式+定时器+hover)
		1.clear:both清楚浮动影响//css中 2.正则表达式 search方法 :指明是否存在相应的匹配,如找到一个返回一个整数值,表明这个匹配距离字符串开始的偏移位置,如果没有找到匹配返回-1f ... 
- 零散知识点总结(持续更新……)
		这篇博客用于记录平时学习中遇到的零散的知识点,它们不适于单独写一篇长博客,在这里记录下来一是为了增强记忆,二是为了方便复习总结.这篇博客会持续更新... 一.JS数据类型及类型判断 1. JS ... 
- Python学习 过程中零散知识点的总结
		自学资料比较零碎,本文是对在Python学习过程中积累的零零散散的知识点的总结 ============================================================ ... 
- Hibernate进阶知识点必备
		hibernate.cfg.xml的常用的配置 hibernate.show_sql:是否把Hibernate运行时的SQL语句输出到控制台,编码阶段便于测试,为true的好 -hibernate.f ... 
- hibernate重要知识点总结
		一.使用注解方式-----实体和表之间的映射 配置spring的applicationContext.xml文件: <bean id="sessionFactory" cla ... 
- struts2、hibernate的知识点
		以下内容是我在复习struts2.hibernate和spring的时候记下得到,部分书上找不到的内容来自网络 以下是网络部分的原文网站: http://blog.csdn.net/frankaqi/ ... 
随机推荐
- NSSearchPathForDirectoriesInDomains用法(转)
			1. iPhone会为每一个应用程序生成一个私有目录,这个目录位于: /Users/sundfsun2009/Library/Application Support/iPhone Simulator/ ... 
- iOS项目实现SVN代码管理方法③(Part 三)
			内容中包含 base64string 图片造成字符过多,拒绝显示 
- 算法训练 Tricky and Clever Password
			算法训练 Tricky and Clever Password 时间限制:2.0s 内存限制:256.0MB 问题描述 在年轻的时候,我们故事中的英雄——国王 Copa——他的私人 ... 
- asp.net webform 当前上下文中不存在名称“__o”
			错误 CS0103 当前上下文中不存在名称“__o” 最近在搞一个webform项目, 再页面写了点<%%>代码, 结果编译下居然出现了这个错误 炸裂啊, 这是什么毛线, 看起来是 In ... 
- matlab sparse()
			一.sparse()的稀疏矩阵简单运用 1.>> A = [0, 0, 0, 0; 0, 0, 1, 0; 0, 0, 0, 0; 0, 1, 0, 2]; >> sparse ... 
- caffe安装编译问题-ImportError: No module named skimage.io
			问题描述 >>> import caffe Traceback (most recent call last): File , in <module> File , in ... 
- (11)shutil模块(文件处理模块)
			shutil模块的格式 shutil.copyfileobj(文件1,文件2) #将文件1的数据覆盖copy给文件2 import shutil f1 = open("1.txt&quo ... 
- 一篇文章入门Jmeter性能测试【经典长文】
			孟船长 目录 1.性能测试定义2.为什么要做性能测试3.性能测试指标.性能测试分类4.Jmeter性能测试实战[入门级]5.参考文章链接 1.性能测试定义 百度&知乎 性能测试是通过自动化的 ... 
- Comet OJ - Contest #2简要题解
			Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ... 
- 转 AngularJS 2.0将面向移动应用并放弃旧浏览器
			AngularJS团队表示“AngularJS 2.0是移动应用的框架”.该框架将继续支持桌面,但其主要关注点变成了移动领域.它的目标还包括通过转译器支持EcmaScript 6(因为浏览器还不支持E ... 
