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中的模型、视图、控制器分别担任着不同的任务。 视图:视图是用户看到并与之交互的界面 阅读详情

相关推荐

STM32H750_QSPI_Flash_Configuration_With_CubeMX

本文详细介绍了如何使用STM32CubeMX配置STM32H750的QSPI Flash接口,包括硬件连接、CubeMX参数设置、代码生成与初始化流程优化。通过实战示例展示了Flash ID读取、页编程与数据读取等常用操作,并提供了调试技巧与性能优化建议,帮助开发者高效实现高速外部存储扩展。

weixin_29176179的博客 274

Hibernate面试要点 Hibernate

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

lanchengxiaoxiao的专栏 415

C#实战:如何用HslCommunication快速搞定三菱FX5U PLC通讯(附完整代码)

本文详细介绍了如何利用HslCommunication库在C#环境中快速实现与三菱FX5U PLC的通讯。通过实战代码演示,从环境搭建、建立连接、核心数据读写到构建健壮的监控服务,系统讲解了如何高效完成数据采集与交互,大幅提升工业自动化项目的开发效率。

s4t5u6v的博客 1202

hibernate一些问题

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

helianbing的博客 474

排队论在食堂窗口规划中的应用:M/M/S模型优化案例

本文通过食堂窗口规划的真实案例,详细阐述了如何运用排队论中的M/M/S模型量化服务效率。文章从问题拆解、数据采集、模型计算到成本效益分析,提供了完整的数学建模实战指南,帮助读者掌握利用最优化方法解决资源配置问题的核心流程与工具。

docker7nomad的博客 1084

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 453

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

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

Ccccyxji的博客 400

MuJoCo 入门教程(一)

在 MuJoCo 仿真中输入自定义数字有三种方法。首先,可在 XML 中定义全局数字字段。它们有一个名称和一个实数值数组。其次,可以通过特定元素的自定义数组来扩展某些模型元素的定义。具体方法是在 XML 元素大小中设置 nuser_XXX 属性。第三,数组 mjData.userdata 不用于任何 MuJoCo 计算。用户可以在这里存储自定义计算的结果;请记住,所有随时间变化的内容都应存储在 mjData 中,而不是 mjModel 中。自定义文本字段可以保存在模型中。

机器人控制与仿真应用 1万+

10 Hibernate Interview Questions and Answers for Java J2EE Programmers

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

冯辉 1118

HTML蓝色动态爱心(完整代码)

HTML语言实现蓝色动态爱心的完整代码。

AIGC 8万+

【嘉立创EDA】PCB 多层板如何交换内层,4层板交换板层

本文使用嘉立创EDA,描述如何在PCB设计时,如何交换各个板层,特别是4层板需要交换内层时,应该如何操作,以供有需要的读者参考。

l64481000的博客 2017

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

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

添柴程序猿的专栏 2590

JMeter压力测试全攻略:从入门到精通

本文系统讲解JMeter压力测试的完整流程与结果评估方法。开篇介绍压力测试的核心概念及JMeter工具特性,随后从环境搭建入手,详细说明JDK配置、JMeter安装及中文界面设置。主体部分围绕测试流程展开,涵盖测试计划创建、线程组参数调优、HTTP请求配置、断言与监听器添加等实操步骤;结果评估环节深入解析聚合报告指标、结果树分析及性能瓶颈定位方法,并通过电商接口测试案例演示全流程应用。文末总结关键要点,为读者提供从基础操作到分布式压测、性能调优的进阶学习方向,助力掌握JMeter在系统性能评估中的核心应用。

邓邓子的博客 2416

Hibernate面试问题集锦: 概述

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

531

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

奋斗 149

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java 常见的面试题(Hibernate)

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

m0_74825172的博客 852

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、付费专栏及课程。

余额充值