Java面试题库——Hibernate框架

1.为什么使用hibernate框架?

对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
基于JDBC的主流持久性框架,是一个优秀的ORM实现,很大程度上的简化了dao层的编码工作。
使用java的反射机制。
性能好,是一个轻量级框架,映射灵活,支持很多种关系型数据库,从一对一到多对多的各种复杂关系。

2.什么是ORM框架?

ORM(Object Relation Mapping)对象关系映射
通过类与数据库表的映射关系,将对象持久化到数据库中,ORM可以利用对象操纵数据库中的表
常见的ORM框架有Hibernate、Mybatis、EclipseLink、JFinal

3.Hibernate中如何在控制台查看打印的sql语句?

在Hibernate的配置文件中添加配置:hibernate.show_sql=true

4.hibernate有几种查询方式?

HQL,QBC,原生SQL查询

5.hibernate实体类可以被定义为final吗?

可以,但是不推荐。因为Hibernate会使用代理模式在延迟关联的情况下提高性能,如果把实体类定义成final类之后,因为java不允许对final类进行扩展,所以hibernate就无法再使用代理了,从而影响性能。

6.在Hibernate中int和Integer的区别?

如果使用基本类型变量int,如果数据库中对应的存储数据是null,使用PO类进行获取数据会出现类型转换异常。
如果使用的是对象类型Integer则不会报错。

7.Hibernate工作流程

(1)读取并解析配置;
(2)读取并解析映射信息;
(3)创建Session Factory;
(4)打开Session;
(5)创建事务Transaction;
(6)持久化操作;
(7)提交事务;
(8)关闭Session;
(9)关闭Session Factory;

8.get()和load()有什么区别?

get方法被调用时会立即发出SQL语句。
loaad方法被调用时会返回一个目标对象的代理对象,在这个代理对象中只存储了目标对象的ID值,只有当调用除ID值以外的属性时才会发出SQL查询。

9.说一下Hibernate的缓存机制

Hibernate中的缓存分为一级缓存和二级缓存
一级缓存就是Session级别的缓存,从事务范围内有效,内置的不能被卸载。
二级缓存是SessionFactory级别的缓存,从应用启动到应用结束有效,是可选的。默认没有二级缓存,需要手动开启。

10.Hibernate的对象有哪些状态?

Transient(瞬间):对象刚New出来,还没设ID,设了其它值。
Persistent(持久):调用了save()、saveOrUpdate(),就变成了Persistent。
Datached(托管):当session close()完之后,变成了Detached。

11.在Hibernate中getCurrentSession和openSession的区别是什么?

openSession:每次使用都是打开一个新的对象,而且使用完需要调用close方法关闭session。
getCurrentSession:如果已经有session,就使用旧的,如果没有才打开新的session。
一般情况下使用getCurrentSession。

12.Hibernate实体类必须要有无参构造函数吗?为什么?

必须有。因为Hibernate框架会调用这个默认构数方法来构造实例对象。如果没有提供任何构造方法,虚拟机会自动提供默认构造方法,如果开发人员提供了其它有参数的构造方法的话,虚拟机就不会再提供默认构造方法,这时必须手动把无参构造器写出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457828.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RestHighLevelClient操作es查询文档

目录 利用RestHighLevelClient客户端操作es查询文档 查询match_all dsl语句: ​编辑 java代码 小结 match字段全文检索查询 dsl语句 java代码 multi_match多字段全文检索查询 dsl语句 java代码 term精确查询 dsl语句 java代码 range范围查询 dsl语句 j…

鸿蒙是必经之路

少了大嘴的发布会,老实讲有点让人昏昏入睡。关于技术本身的东西,放在后面。 我想想来加把油~ 鸿蒙发布后褒贬不一,其中很多人不太看好鸿蒙,一方面是开源性、一方面是南向北向的利益问题。 不说技术的领先点,我只扯扯…

破解API加密逆向接口分析,看这篇就够了

破解API加密逆向接口分析,看这篇就够了 每日一练:API接口数据逆向,看完这篇,就能学会找到逆向的入口函数、调试js代码、分析js代码、还原加解密算法!为了能及时获取后续的爬虫及逆向的技术分享文章,请先关注…

qt EventFilter用途详解

一、概述 EventFilter是QObject类的一个事件过滤器,当使用installEventFilter方法为某个对象安装事件过滤器时,该对象的eventFilter函数就会被调用。通过重写eventFilter方法,开发者可以在事件处理过程中进行拦截和处理,实现对事…

代码随想录算法训练营第46期

class Solution { public: // 决定dp[i]的因素就是第i房间偷还是不偷。 // 偷第i房间,那么dp[i] dp[i - 2] nums[i] 即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[…

Unity插件-Intense TPS 讲解

目录 关于TPS 打开场景:WeaponTest.unity, 只要把这些枪点,打开(默认隐藏,不知道为何), 一开始不能运行如何修复 总结 关于TPS 个人不是TPS,FPS的射击游戏爱好者, 不过感觉这个枪感&…

riscv uboot 启动流程分析 - SPL启动流程

分析uboot 启动流程硬件:启明智显推出M4核心板 (https://gitee.com/qiming-zhixian/m4-openwrt) 1.U-boot和SPL概述 U-Boot 分为 uboot-spl 和 uboot 两个组成部分。SPL 是 Secondary Program Loader 的简称,第二阶段程序加载器。…

springboot083基于springboot的个人理财系统--论文pf(论文+源码)_kaic

基于springboot的个人理财系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了个人理财系统的开发全过程。通过分析个人理财系统管理的不足,创建了一个计算机管理个人理财系统的方案。文章介绍了个…

JavaEE初阶---多线程(三)---内存可见性/单例模式/wait,notify的使用解决线程饿死问题

文章目录 1.volatile关键字1.1保证内存的可见性--引入1.2保证内存的可见性--分析1.3保证内存的可见性--解决1.4内存可见性-JMM内存模型 2.notify和wait介绍2.1作用一:控制调度顺序2.2作用二:避免线程饿死2.3notify和notifyAll区分 3.单例模式--经典设计模…

GoogleChrome的安装和使用

Google Chrome 文章目录 Google Chrome安装主页设置扩展程序 安装 chrome官网 正规的下载好之后logo是这样的 主页设置 说明 正常情况下, GoogleChrome是无法正常访问的, 因为chrome的搜索引擎默认使用的是谷歌搜索, 而在国内是无法正常访问谷歌搜索的, 所以需要更改一下主页…

【C语言】预处理(预编译)详解(上)(C语言最终篇)

文章目录 一、预定义符号二、#define定义常量三.、#define定义宏四、带有副作用的宏参数五、宏替换的规则六、宏和函数的对比1.宏的优势2.函数的优势3.宏和函数的命名约定 一、预定义符号 学习本篇文章的内容推荐先去看前面的编译和链接,才能更好地理解和吸收&#…

基于springboot+vue的高校就业管理系统,

基于springbootvue的高校就业管理系统, 分为管理员:测试账号:10086/123 学生:测试账号:10087/123 包含个人信息、查看企业岗位信息、简历信息管理、我的应聘企业:测试账号:10070/123 包含企业信息、岗位企业信息管理、查看学生简历信息…

颠覆级AI:10秒生成超清视频

颠覆级AI:10秒生成超清视频 Pyramid-Flow 是一款开源 AI 视频生成神器💻,只需文字或图片即可极速生成高清视频🎥!高效、高清、资源需求低,适合创作广告、教学视频等多种用途🚀,快来…

VIVO售后真好:屏幕绿线,4年免费换屏

只要亮屏就有。这也太影响使用了。 本来想换趁机换手机,看了VIVO发布的X200,决定等明年的X200 ULTRA。手头这个就准备修。 查了一下价格,换屏1600,优惠1100。咸鱼上X70 PRO也就800。能不能简单维修就解决呢?于是联系…

4款免费恢复工具,一键拯救你的重要资料

不管是学习的资料、工作的文件,还是重要的照片和视频,要是丢了或者不小心删了,我们肯定急得像热锅上的蚂蚁。不过好在科技发达了,出现了一些能找回数据的神奇工具。今天,我就带你去看看四款免费数据恢复的工具&#xf…

【无人机设计与控制】改进人工势场法,引入模糊控制实现无人机路径规划和避障

摘要 本文提出了一种基于改进人工势场法并结合模糊控制的无人机路径规划和避障方法。传统的人工势场法在处理障碍物时易出现局部极小值问题,且对动态障碍物的应对能力有限。为了解决这些问题,我们引入了模糊控制来调整势场参数,从而使无人机…

Mybatis中的参数占位符:${...} 、#{...}的区别

Mybatis中的参数占位符:${...} 、#{...}的区别 在Mybatis中提供的参数占位符有两种:${…} 、#{…} #{…} 执行SQL时,会将#{…}替换为?,生成预编译SQL,会自动设置参数值使用时机:参数传递,都使…

Java面试题——微服务篇

1.微服务的拆分原则/怎么样才算一个有效拆分 单一职责原则:每个微服务应该具有单一的责任。这意味着每个服务只关注于完成一项功能,并且该功能应该是独立且完整的。最小化通信:尽量减少服务之间的通信,服务间通信越少&#xff0c…

C++11实践指北

C11:书、在线工具、库。 书 1. 《现代C语言核心特性解析》 覆盖 C11~C20 特性的讲解。 视频跟读:https://www.bilibili.com/video/BV1nN4y1j7fv 现代CPP随笔_0CCh - 每天5分钟了解现代C新特性 2. 《C Primer》第五版 基于 C11 的 C 入门书。 正在看…

Python实现贝叶斯优化器(Bayes_opt)优化简单循环神经网络分类模型(SimpleRNN分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 贝叶斯优化器 (BayesianOptimization) 是一种黑盒子优化器,用来寻找最优参数。 贝叶斯…