Hibernate面试要点

Java面试技巧 转自:https://www.cnblogs.com/my376908915/p/6842178.html [Java面试一]面试复习大纲. [Java面试二]Java基础知识精华部分. [Java面试三]JavaWeb基础知识总结. [Java面试四]Strust2总结及在面试中的一些问题. [Java面试五]Spring总结以及在面试中的一些问题. [Java面试六]SpringMVC总结以及在面试中的一些问题. [Java面试七]Mybatis总结以及在面试中的一些问题. [Java面试八]Hiber 阅读详情

get和load的区别:
1>不存在对应记录时表现不一样
2>load返回的是代理对象(javassist.jar生成二进制码),等到真正用到对象的内容才会发出SQL语句
3>get直接从数据库加载,不会延迟
无论是get还是load,都会首先查找缓存(一级缓存),如果没有,才会去数据库查找,调用clear()方法,可以强制清除session缓存
调用flush()方法可以强制进行从内存到数据库的同步。
SessionFactory
1>用来管理Session
2>通常情况下每个应用只需要一个SessionFactory
3>除非要访问多个数据库的情况
4>关注两个方法即可
i>openSession每次都是新的,需要close();
ii>getCurrentSession从上下文找,如果有,用旧的,如果没有,创建新的
a>用途,界定事务边界
b>事务提交自动close;
c>current_session_context_class(jta或者thread)
thread使用connection
<一>list和iterate的区别:
a>list取出所有
b>iterate取出id,等要用的时候再根据id取出对象
c>session中的list第二次发出,仍然会倒数据库查询
d>iterate第二次,首先找session级缓存
getCurrentSession()一定要在事务中使用!!!
<二>缓存问题
i:一级缓存:
session级别的缓存

ii:二级缓存:
SessionFactory级别缓存,可以跨Session级别访问
什么对象应该放在二级缓存?
1>经常被访问
2>改动不大
3>数量有限
怎么使用二级缓存?
第一步:打开二级缓存。
第二步:在hibernate文件里面配置如下信息:<这是使用ehcache实现>

true org.hibernate.cache.EhCacheProvider 第三步:添加ehcache.xml文件
第四步:在映射类文件中添加属性:
默认情况下,load会使用二级缓存,iterate会使用二级缓存。
list会默认往二级缓存添加数据,但是查询的时候不使用。

iii:查询缓存:
是指同样的,重复查询使用的缓存。
查询缓存依赖于二级缓存,所以,需要打开二级缓存。

true 写程序的时候,需要调用:Query的setCachable(true);
缓存算法:LRU,LFU,FIFO(面试意义更大,实际当中很少用到)
1.Least Recently Used
2.Least Frequently Used(命中率低)
3.First Infirst Out
memoryStoreEvictionPolicy=”LRU”(ehcache)。

<三>事务的并发处理(面试的意义更大)
并发出现的问题:
1>第一类丢失更新
2>脏读
3>不可重复读
4>幻读
设置Hibernate的设置级别:
1:read-uncommitted
2:read-uncommitted
4:repeatable-read
8:serializable
设置锁的隔离级别:

2 乐观锁和悲观锁。
一对多中,一的一方有多的一方集合,多的一方有以的一方的实体类。
一的一方配置示例:





多的一方配置文件示例:


get和load方法:
即使加载:不管是否使用,马上加载(从数据库取出放入内存),如session.get()方法。不需要session一直打开状态
优点:响应速度快,效率高
缺点:占用资源多
延迟加载:代码执行后并不马上执行sql语句从数据库获取数据,而是在使用对象是才加载,如session.load()方法。
注意,如果使用延迟加载,session要一直 处于open状态,否则报异常
优点:占用资源少
缺点:响应速度慢
1:表的别名:select stu from Student as stu where stu.stuName=’yinlei’;
2:返回单个数据:当Sql语句返回的只有一个数值时,可以使用query.uniqueResult();
如:select stu from Student as stu where stuId=1;
3:模糊查询:select stu from Student as stu where stu.stuName like ‘yinlei’;
4:select stu.stuId,stu.stuName from Student as stu返回的不是实体对象的list,而是
5:Object[]数组list
6:命名参数类似于PreparedStatement的功能,普通占位符,使用?,但小标中从0开始,而JDBC中从1开始
示例:
String hql = “select stu from Student as stu where stu.stuAge between ? and ?”;
Query query = session.createQuery(hql);
query.setInteger(0, 22);
query.setInteger(1, 23);
List stus = query.list();
当占位符较多时,容易混淆,这时可以使用hibernate提供的命名参数查询:
示例:
String hql = “select stu from Student as stu where stu.stuAge between :minAge and :maxAge and stu.stuName like :name”;
Query query = session.createQuery(hql);
query.setInteger(“minAge”, 21);
query.setInteger(“maxAge”, 23);
query.setString(“name”, “yinlei%”);
List stus = query.list();
聚合函数示例:
String hql = “select count(stu),max(stuAge),min(stuAge),avg(stuAge),sum(stuAge) from com.yinlei.Student as stu”;
Query query = session.createQuery(hql);
Object[] objs = (Object[]) query.uniqueResult();
for(Object object : objs ){
System.out.println(object);
}
Mysql分页语法很简单:select * from student limit (nowpage-1)*pagesize,pagesize
sqlserver分页:select top 3 from student where stuId not in(select top 0 stuId from student order by stuId) order by stuId;
Hibernate的分页方法:
String hql = “from Student”;
Query query = session.createQuery(hql);
query.setFirstResult((nowPage-1)*pageSize);
query.setMaxResults(pageSize);
List stus = query.list();
HQL可以执行查询删除修改新增操作,但是只要删除操作偶尔使用。
示例:
String queryString = “update Student set stuAge = stuAge+1″;
Query query = session.createQuery(queryString);
int rows = query.executeUpdate();
t.commit();
System.out.println(rows);
java的反射机制
Class
getMethods()得到本类以及父类的所有方法
getDeclaerMethods得到本类的所有方法
Method
getName()得到方法名
java面试之项目面试问题--不看面试会后悔的 1.请描述下你做的项目:XXX系统是什么什么,主要目的是XXX,整个系统包含了哪些功能模块,然后说包含了哪些模块,自己做了哪些模块。2.结合项目谈谈你对MVC的理解MVC是model-view-controler的简称。也就是模型-视图-控制器。mvc是一种设计模式,他强制性的把应用程序的输入、处理和输出分开。mvc中的模型、视图、控制器分别担任着不同的任务。 视图:视图是用户看到并与之交互的界面 阅读详情

相关推荐

pdf.js 移动端手势缩放功能实现与原生事件集成

本文详细解析了如何为pdf.js的viewer.html移动端页面实现流畅的双指捏合手势缩放功能。通过深入分析pdf.js的缩放机制,并利用原生触摸事件(touchstart、touchmove、touchend)进行集成,在不修改核心源码的前提下,为用户提供媲美原生应用的顺滑缩放体验,有效提升了移动端PDF阅读的专业性和用户满意度。

brandy的博客 490

Hibernate面试要点 Hibernate

get和load的区别: 1>不存在对应记录时表现不一样 2>load返回的是代理对象(javassist.jar生成二进制码),等到真正用到对象的内容才会发出SQL语句 3>get直接从数据库加载,不会延迟 无论是get还是load,都会首先查找缓存(一级缓存),如果没有,才会去数据库查找,调用clear()方法,可以强制清除session缓存 调用flush()方法可以强制进行从内存

lanchengxiaoxiao的专栏 415

Python | 处理CMIP6 NC数据,以tas为例

各位同学,一般在文章最后一章我们可能会做不同气候情景下变量的未来时空变化特征,类似上图。从cmip6下载的nc数据常需要转换格式、裁剪到研究区和重采样等,本期代码可以解决这类问题。

qq_48539301的博客 1384

hibernate一些问题

Hibernate中get和load有什么不同之处? 把get和load放到一起进行对比是Hibernate面试时最常问到的问题,这是因为只有正确理解get()和load()这二者后才有可能高效地使用Hibernate。get和load的最大区别是,如果在缓存中没有找到相应的对象,get将会直接访问数据库并返回一个完全初始化好的对象,而这个过程有可能会涉及到多个数据库调用;而load方法在缓存中没

helianbing的博客 474

【SPSS操作】Non-parametric ANCOVA (Quade‘s) in SPSS

在SPSS中执行Quade的非参数ANCOVA需要手动计算步骤,因为SPSS没有内置的菜单选项。以下是详细的操作指南。

weixin_43689393的博客 1279

深度学习的unfold操作

对于彩色图像这样的三维数据,unfold操作会对每个通道分别进行上述的二维展开操作。例如,一个 RGB 图像,在对其进行unfold操作时,红色通道、绿色通道和蓝色通道的数据都会被独立地按照定义的窗口和步长展开,然后将这些展开后的通道数据按照原来的通道顺序组合在一起,形成新的张量。与我们熟悉的卷积类似,unfold也是使用一个特定大小的窗口和步长自左至右、自上至下滑动,不同的是,卷是滑动后与核求乘积(所以取名为卷积),而unfold滑动后不求乘积,是将窗口内的数据展开。

xulibo5828的博客 2168

Hibernate常见面试题,让你不再惧怕面试

1、get()和load() 的区别 1) 发送sql的时机: load是延迟加载 get是立即加载; 2) 运行出错后, get方法抛异常为NullPointException,返回的是null,此null是一个真实的对象。而load方法报ObjectNotFoundException,它返回的是一个代理对象。 3) get会先查一级缓存, 再查二级缓存,然后查数据库;load会先查一级...

Ccccyxji的博客 400

WPS JS宏实战:批量调整200个Word表格格式的避坑指南(附完整代码)

本文提供了一份详尽的WPS JS宏实战指南,针对批量调整大量Word表格格式的需求。文章深入解析了如何利用JS宏自动化设置字体、行距和边框,并重点解决了常见的“首行访问报错”等核心难题,附有可直接使用的完整代码,帮助用户显著提升文档处理效率。

weixin_29280219的博客 430

10 Hibernate Interview Questions and Answers for Java J2EE Programmers

在Java J2EE方面进行面试时,常被问起的Hibernate面试问题,大多都是针对基于Web的企业级应用开发者的角色的。Hibernate框架在Java界的成功和高度的可接受性使得它成为了Java技术栈中最受欢迎的对象关系影射(ORM)解决方案。Hibernate将你从数据库相关的编码中解脱了出来,使你可以更加专注地利用强大的面向对象的设计原则来实现核心的业务逻辑。采用Hibernate后,你

冯辉 1118

Python自动化测试全套教程-第一天(python、pycharm开发环境的安装与配置(图文超级详细);附安装包)

本文介绍了Python开发环境的完整安装配置流程。主要内容包括:1) Python解释器的下载安装与版本检测方法;2) PyCharm IDE的下载安装步骤,包括专业版和社区版的选择;3) PyCharm的基础配置和项目创建方法;4) 开发环境的基本构造说明。文章提供了两种获取安装包的方式(官网下载和文章附件),并详细说明了解释器卸载、安装过程中的注意事项,以及如何验证环境配置成功。特别强调了PyCharm安装时的路径选择和虚拟环境的创建方法,为Python初学者提供了完整的开发环境搭建指南。

kiwi_king的博客 2035

[STM32F103C8T6]W5500+Modbus TCP(HAL库)

本章节是博主学习Modbus TCP所写的一篇文章Modbus TCP是Modbus的一个分支,主要用到网口通信的,在工业上也用的很频繁,我们公司最近的项目就是用的W5500+modbus TCP来和PC端的上位机通信和交互的。虽然这个项目不是我在写代码,但是我都学了Modbus RTU了,那我也抽空学习一下Modbus TCP吧。本次的Modbus TCP不是博主写的,是一个大佬开源的一个W5500写的一个Mobus TCP代码,我在这个基础上自己写了主机读从机多个数据,和主机写从机寄存器的函数。

sinat_58149788的博客 4086

java面试要点---Hibernate面试系统知识点复习,hibernate原理,缓冲---随时更新

1.Hibernate基础 1.1. Hibernate用来做什么 * Hibernate是开源的、用亍封装数据访问层的组件,我们称乊为数据访问层框架(戒持久层框架)。 乊前我们通过JDBC/SQL语句从数据库中访问/操作数据,而Hibernate就是封装了这些操作,与 门用亍数据访问层的组件技术。 出现Hibernate框架乊前在企业项目开发过程中,如下几点造成了程序员们的痛苦

添柴程序猿的专栏 2590

Figma 设计稿转前端代码:Cursor 实现 UI 还原的 4 种精准映射方法

揭示 Figma 设计稿转前端代码失效的根本原因在于四层语义未对齐(像素→布局、视觉→样式、交互→行为、意图→架构),提出以语义标注为核心的结构化喂数据方法,详解通过图层命名、Description 字段和 Markdown 上下文锚点实现高精度 React 组件生成,并给出可落地的避坑指南与实测提

weixin_42545292的博客 140

Hibernate面试问题集锦: 概述

http://www.importnew.com/2281.html

531

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Hibernate 面试中最常考察的知识点整合

• Hibernate hibernate面试题集hibernate知识点hibernate和JDBChibernate总结hibernate session相关方法 对于Hibernate,面试官最想知道的无非是以下总结这这十多个问题,每个问题都有详细的答案,如果都完全掌握以下的这些问题,那面试时问及Hibernate你还用怕什么呢?让自信伴随着你第一次冲刺吧! 一、简述 Hi...

奋斗 149

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java 常见的面试题(Hibernate)

*ORM:**对象关系型映射,主要是解决对象与关系数据库存在的互不匹配的现象的技术ORM的方法论基于3个核心原则简单:以最基本的形式建模数据传达型:数据库结构被任何人都能理解的语言文档化精确性:基于数据模型创建正确标准化了的结构常用的ORM框架有:hibernate,mybatis可以将Hibernate的实体类定义为final类,但这种做法并不好。

m0_74825172的博客 852

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java设计流程执行器_Java进阶面试精选系列:SpringMVC+SpringBoot+Hibernate+Mybatis+设计模式...

小编精心收集:为金三银四准备,以下面试题先过一遍,为即将到了的面试做好准备,也过一遍基础知识点。一、Spring/Spring MVC1.为什么要使用 spring?2.解释一下什么是 aop?3.解释一下什么是 ioc?3.spring 有哪些主要模块?4.spring 常用的注入方式有哪些?5.spring 中的 bean 是线程安全的吗?6.spring 支持几种 bean 的作用域?7.s...

weixin_33773670的博客 223

Spring,hibernate,struts的面试笔试题

Spring,hibernate,struts的面试笔试题 1.strust的。  Action是不是线程安全的?如果不是  有什么方式可以保证Action的线程安全?如果是,说明原因  2.MVC,分析一下struts是如何实现MVC的  3.struts中的几个关键对象的作用(说说几个关键对象的作用)  4.spring  说说AOP和IOC的概念以及在s

zxcvzxcv7的专栏 550

Java大厂面试揭秘:从基础到复杂问题的全面解析

面试官我们会在一周内通知你面试结果。

weixin_46755643的博客 706

三年经验java开发人员面试总结

作者07年毕业,毕业后一直从事于javaEE、ssh框架的B/S架构的软件开发工作,算是三年多相关的工作经验,呆了两个公司。最近离职重新找工作,面试了n家公司,颇有感慨,希望写出面试经历与大家分享。 首先,面试前的准备。 准备应包括几个方面,一是简历。简历不能太长,但毕竟有三年多的经验,按照每半年一个项目,则至少写6个项目,不要写太多。其次就是复习一下java的基础知识。如java中的io、集合、多线程,ajax、jsp、servlet、spring、struts、hibernate等基础知识

kobe1029的专栏 1945

Java面试实录:揭秘大厂面试中的核心技术点与业务场景

在某家知名互联网大厂的面试室里,谢飞机正坐在面试官对面,准备迎接他的Java开发岗位面试。通过这次面试,读者可以了解到在互联网大厂Java开发面试中,面试官会从基础到进阶,再到业务场景提问,帮助求职者更好地准备面试。我们公司最近在做一个智慧物流的项目,想问问您在使用Kubernetes进行容器编排时,有哪些经验?那么,您在项目中使用Hibernate的时候,碰到过N+1查询问题吗?那么,在实现OAuth2认证时,您会如何进行令牌的存储和管理?

weixin_46755643的博客 443

87道MyBatis面试八股文(答案、分析和深入提问)整理

如果你仅使用 MyBatis 而不使用 Spring,那么事务管理可能会比较简单,但在大多数情况下,使用 Spring 的事务管理会提供更多的灵活性和更好的管理能力。若你的应用使用了Spring框架,那么推荐使用Spring的事务管理,以便充分利用其提供的多种特性和集成能力。总体而言,MyBatis 中 Mapper 接口的实现是通过动态代理模式与 SQL 映射文件的结合来实现的。开发者定义的接口方法会被动态代理处理,从而调用到具体的 SQL 语句,并将结果映射为 Java 对象。

ocean2103的专栏 1808
上一篇: hibernate缓存机制详解
下一篇: 真是糊涂
Hellowgy
博客等级 码龄18年 10粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值