hibernate面试题

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件) 本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。 阅读详情
1.Hibernate有哪几种查询数据的方式 
      (1)导航对象图查询
      (2)OID查询
      (3)HQL
      (4)QBC
      (5)本地SQL

2.load()和get()的区别


load加载方法:

Java代码

Users user = (Users)session.load(Users.class, userId);    
Users user = (Users)session.load(Users.class, userId);

get加载方法:

Java代码

Users user = (Users)session.get(Users.class, userId);  
Users user = (Users)session.get(Users.class, userId);



两加载方法区别:

区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException;

区别2:load支持延迟加载,get不支持延迟加载。

也就是说:

Java代码

Users user = (Users)session.load(Users.class, userId);  
Users user = (Users)session.load(Users.class, userId);

这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。

而:

Java代码

Users user = (Users)session.get(Users.class, userId);  
Users user = (Users)session.get(Users.class, userId);

则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。

注意:

Java代码

Users user = (Users)session.load(Users.class, userId);   
System.out.println(user.getId());  
Users user = (Users)session.load(Users.class, userId);

System.out.println(user.getId());

上面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。



3.   Hibernate工作原理及为什么要用?

原理:

1.         读取并解析配置文件

2.         读取并解析映射信息,创建SessionFactory

3.         打开Sesssion

4.         创建事务Transation

5.         持久化操作

6.         提交事务

7.         关闭Session

8.         关闭SesstionFactory



为什么要用:



1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。



4.   Hibernate是如何延迟加载?

1.         Hibernate2延迟加载实现:a)实体对象  b)集合(Collection)

2.         Hibernate3 提供了属性的延迟加载功能

当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

5.   Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)

类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、



5.   说下Hibernate的缓存机制

1.         内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存

2.         二级缓存:

a)         应用及缓存

b)        分布式缓存

条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非         关键数据

c)  第三方缓存的实现



6.   Hibernate的查询方式

Sql、Criteria,object comptosition

Hql:

1、  属性查询

2、  参数查询、命名参数查询

3、  关联查询

4、  分页查询

5、  统计函数



7.   如何优化Hibernate?

1.         使用双向一对多关联,不使用单向一对多

2.         灵活使用单向一对多关联

3.         不用一对一,用多对一取代

4.         配置对象缓存,不使用集合缓存

5.         一对多集合使用Bag,多对多集合使用Set

6.         继承类使用显式多态

7.         表字段要少,表关联不要怕多,有二级缓存撑腰

=====================Hibernate笔试题==========================


(1)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)
A)表对应类
B)记录对应对象
C)表的字段对应类的属性
D)表之间的参考关系对应类之间的依赖关系

(2)以下关于SessionFactory的说法哪些正确?(多选)
A)对于每个数据库事务,应该创建一个SessionFactory对象
B)一个SessionFactory对象对应一个数据库存储源。
C)SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,只需要创建一个。
D)SessionFactory的load()方法用于加载持久化对象


(3)Customer类中有一个Set类型的orders属性,用来存放Order订单对象,在Customer.hbm.xml文件中,用哪个元素映射orders属性?
A)<set> B)<one-to-many> C)<many-to-one> D)<property>

(4)<set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)
A)none
B)save
C)delete
D)save-update


(5)以下哪些属于Session的方法?
A)load()
B)save()
C)delete()
D)update()
E)open()
F)close()

(6)以下程序的打印结果是什么?(单选)

tx = session.beginTransaction();
Customer c1=(Customer)session.load(Customer.class,new Long(1));
Customer c2=(Customer)session.load(Customer.class,new Long(1));
System.out.println(c1==c2);
tx.commit();
session.close();

A)运行出错,抛出异常
B)打印false
C)打印true


(7)以下程序代码对Customer的name属性修改了两次:
tx = session.beginTransaction();
Customer customer=(Customer)session.load(Customer.class,
                              new Long(1));
customer.setName(\"Jack\");
customer.setName(\"Mike\");
tx.commit();

执行以上程序,Hibernate需要向数据库提交几条update语句?(单选)
A)0 B)1 C)2 D)3


(8)在持久化层,对象分为哪些状态?(多选)
A)临时状态
B)独立状态
C)游离状态
D)持久化状态


(9)对于以下程序,Customer对象在第几行变为持久化状态?(单选)
Customer customer=new Customer(); //line1
customer.setName(\"Tom\"); //line2
Session session1=sessionFactory.openSession(); //line3
Transaction tx1 = session1.beginTransaction(); //line4
session1.save(customer); //line4
tx1.commit(); //line5
session1.close(); //line6

A) line1 B)line2 C)line3 D)line4 E)line5 F)line6


(10)对于以下程序,Customer对象在第几行变为游离状态?(单选)
Customer customer=new Customer(); //line1
customer.setName(\"Tom\"); //line2
Session session1=sessionFactory.openSession(); //line3
Transaction tx1 = session1.beginTransaction(); //line4
session1.save(customer); //line4
tx1.commit(); //line5
session1.close(); //line6

A) line1 B)line2 C)line3 D)line4 E)line5 F)line6

(11)以下哪一种检索策略利用了外连结查询?(单选)
A)立即检索 B)延迟检索 C)迫切左外连结检索

(12)假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况(单选)
Session session=sessionFactory.openSession();
tx = session.beginTransaction();
Customer customer=(Customer)session.get(Customer.class,new Long(1));
tx.commit();
session.close();
Iterator orderIterator=customer.getOrders().iterator();

A)编译出错 B)编译通过,并正常运行 C)编译通过,但运行时抛出异常

(13)关于HQL与SQL,以下哪些说法正确?(多选)
A)HQL与SQL没什么差别
B)HQL面向对象,而SQL操纵关系数据库
C)在HQL与SQL中,都包含select,insert,update,delete语句
D)HQL仅用于查询数据,不支持insert,update和delete语句

(14)事务隔离级别是由谁实现的?(单选)
A)Java应用程序 B)Hibernate C)数据库系统 D)JDBC驱动程序

(15)悲观锁与乐观锁,哪个具有较好的并发性能?(单选)
A)悲观锁 B)乐观锁

答案:
(1)A,B,C (2)B,C (3)A (4)D (5)A,B,C,D,F (6)C (7)B (8)A,C,D (9)D   (10)F (11)C (12)C (13)B,D (14)C (15)B
《AI应用架构师智能特征工程实践的前沿趋势解读》 面对传统方法的局限性,智能特征工程(Intelligent Feature Engineering)应运而生。智能特征工程是指利用人工智能、机器学习和自动化技术,实现特征提取、构造、选择和优化过程的自动化、智能化和可扩展化的方法和技术体系。效率提升:将数据科学家从繁琐的人工特征工程中解放出来,大幅缩短特征开发周期。质量保障:通过系统化方法发现人类难以察觉的特征模式,提高特征质量和模型性能。可扩展性:能够处理大规模、高维度和多类型的数据,适应不同领域和场景。降低门槛。 阅读详情

相关推荐

渲染TA实战:冰面效果制作分享

这里画一张图:我们可以看到,如果深度图的范围没有进过缩放,那就是0-1,但是归一化的-viewDir的向量长度为1,如果-viewDir不和表面垂直(这是绝大多数的情况),那么viewDir.z的分量就是一个不定值,我们不好确定需要走多少步,viewDir才能和底面相交。然后我们需要冰面的Alpha图:因为冰是透明物体,所以相对于Albedo,我们更需要的是一张冰面裂纹的蒙版图,这张图需要记录冰面的裂纹走向和深浅、冰封的气泡、以及因为压力或气体等原因产生的类似雾的效果。

qq_41166022的博客 1027

[Java面试八]Hibernate总结以及在面试中的一些问题.

1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 ②.Hibernate 是一个基于JDBC的主流持久化框架,是一个优秀的ORM 实现。他很大程度的简化DAO层的编码工作 ③.hibernate 的性能非常好,因

qq_35833843的博客 624

【漆学军】MT4进阶到MT5速成之路(2)获取持仓

MT5在持仓获取上,要比MT4复杂些,分两部分,获取持仓和挂单采用了不同的方法。 一、获取持仓中的buy和sell单 int b=0;//获取buy单个数 int s=0;//获取sell单个数 double lot_total_buy=0;//获取持仓中buy单的总手数 double lot_total_sell=0;//获取持仓中sell单的总手数 for(int i=0; i<PositionsTotal(); i++) { ulong ticket=Positi

漆学军的编程笔记 1625

Java 常见的面试题(Hibernate)

Java 常见的面试题(Hibernate)

MR.骑士道 5927

基于PLC的全自动洗衣机控制系统+控制程序

本设计使用PLC控制系统替换了传统的继电器控制系统,实现了全自动洗衣机在硬件方面的提升,丰富了全自动洗衣机在软件方面的功能,提高了全自动洗衣机的洗衣效率,基本可以满足用户的洗衣需求。

zzzz114231的博客 8955

保姆级教程:用Protege 5.5.0从零构建你的第一个知识图谱(附实战案例文件)

本文提供了一份详细的Protege 5.5.0使用指南,从零开始构建知识图谱。涵盖环境配置、本体结构设计、实例填充到可视化展示的全流程,特别适合初学者快速掌握知识建模技术。通过实战案例演示,帮助读者理解如何定义类、属性及建立实例关系,是学习知识图谱构建的实用教程。

weixin_42548816的博客 554

Hibernate常见面试题

每个 Session 对象只代表一个数据库连接,它是非线程安全的,应该在每个事务中使用一个新的 Session 对象。例如,如果一个实体类具有一个关联对象列表,并且该列表被定义为延迟加载,那么只有在访问该列表时,Hibernate 才会执行 SQL 查询语句。Hibernate 中的缓存是一种存储在内存中的数据结构,用于存储经常访问的实体类和关联对象。一级缓存(Session 缓存)是 Session 对象的缓存,它存储着已经从数据库中查询出来的对象,以避免多次查询同一个对象。

lonely_baby的博客 851

华为OD机试真题2026双机位C卷 Python&JS 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 318

Hibernate常见面试题和答案

1. 为什么要使用 hibernate? (1). 对JDBC做了轻量级的封装,简化了数据访问层编码。 (2). Hibernate是一个ORM框架,开发者可以使用面向对象的思想操作数据库,使用更加方便。 (4). hibernate映射很灵活,支持各种关系数据库,从一对一到多对多的各种复杂关系。 一对多,...

哈哈彬的博客 2250

液压轴位置闭环控制(比例伺服阀应用)

液压阀的基础知识请参看下面的博客文章:PLC液压控制系列之比例流量阀结构分析_RXXW_Dor的博客-优快云博客比例流量阀液压同步控制的PID闭环调节可以参看下面这篇博文三菱FX3U-PLC 前馈+PID闭环调节实现液压同步控制(比例换向阀)_RXXW_Dor的博客-优快云博客液压控制系统在工业现场应用非常广泛,这篇博文我们简单分析下液压同步控制。这套系统的液压缸为单液压缸,首先简单介绍下什么是单作用液压缸,液压系统的详细理论分析大家可以找些专业书籍学习。

RXXW_Dor的博客 2263

如何给K8S配置一个具有永久有效的kubeconfig

在 Amazon EKS 环境中,Kubernetes 的认证机制与 AWS IAM 深度集成,通过aws-iam-authenticator动态生成临时凭证。这种设计虽然增强了安全性,但给需要持久化凭证的工具链(如 CI/CD 系统中的 KubeVela)带来了挑战。具体表现为:临时凭证失效​​:默认 Token 有效期为 15 分钟至 1 小时;​​IAM 角色限制​​:直接使用aws eks get-token生成的凭证无法持久化

小杨同学的博客 660

Hibernate常用面试题

一)什么是Hibernate Hibernate是一种用于Java环境的对象/关系映射解决方案。术语“对象/关系映射”是指将数据从对象模型表示映射到关系数据模型表示的技术(反之亦然)。 二)Hibernate优势 1、对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2、Hibernate是一个基于JDBC的主流持久层框架,基于ORM实现。很大程度的简化DAO...

p812438109的专栏 982

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9550

java hibernate 面试题_Java Hibernate面试65题

​Java Hibernate面试65题大家好,这一期呢,我们谈一下Java hibernate相关的面试题。第1题,什么是hibernate?hibernate是一个架构, 用来对应Java对象数据库表对象。使用一个xml文件来配置。第2题, 什么是orm?object relational mapping。它是hibernate的基础概念。用来对应数据库表跟Java对象。第3题, Java类属...

weixin_33212575的博客 646

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hibernate面试题+答案

Hibernate面试题+答案

hdfyhf的博客 3209

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

常见Hibernate面试题汇总

以下是常见的Hibernate面试题,希望能给您的学习和面试提供帮助。 一.在数据库中条件查询速度很慢的时候,如何优化? 1.建索引 2.减少表之间的关联 3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面 4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据 二.在Hiberna

natian306的专栏 4807

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

struts2,spring,hibernate面试题总结THREE

Spring,hibernate,struts的面试笔试题(含答案) Hibernate的相关试题: 1、Hibernate的工作原理? hibernate的初始化  读取hibernate的配置信息,创建SessionFactory。 A、 创建Configeration的实例。    它的构造方法:将配置文件信息(hibernate-config.xml)读入到内存。一个Config

greensomnuss的博客 7468

hibernate的面试题

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

u012067853的博客 214

hibernate savealiasentity 保存后id为空_Java之Hibernate常见面试题

Java之Hibernate常见面试题 1、hibernate的inverse属性的作用?  解决方案一,按照Object[]数据取出数据,然后自己组bean  解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1filed1,type2field2),然后在hql里面就可以直接生成这个bean了。 2、sprin...

weixin_35130561的博客 153

hibernate 关联表的属性排序_hibernate面试题

* 比较Hibernate的三种检索策略优缺点1立即检索;优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象;缺点:1.select语句太多;2.可能会加载应用程序不需要访问的对象白白浪费许多内存空间;2延迟检索:优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对...

weixin_30293523的博客 589

Hibernate面试题及答案

Hibernate面试题及答案

hdfyhf的博客 484

十五道关于Hibernate的面试题

文向您介绍Hibernate在面试中常被使用的十五个面试题,包括关系数据模型与对象模型关系、SessionFactory的正确说法等。   (1)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选) A)表对应类 B)记录对应对象 C)表的字段对应类的属性 D)表之间的参考关系对应类之间的依赖关系 (2)以下关于SessionFactory的说法哪些正确?(多选) A)对于

fengxuezhiye的专栏 4889

Hibernate常见面试题整理

Hibernate常见面试题无论多复杂,hibernate终究是一个和数据库打交道的框架,与jdbc功能一样。所以没有理由畏惧hibernate. hibernate的难点我觉得有两方面:一是性能优化,二是session管理。性能优化是个经验活; 关于session管理,单纯的hibernate可以使用ThreadLocal来解决, 如果和spring结合,使用spring提供的session管理...

u013407384的博客 187

hibernate常见面试题详解

整理hibernate常见面试题 简述hibernate运行原理或者工作原理 简述hibernate的get和load方法区别 简述hibernate数据三种状态 简述hibernate的缓存机制 简述hibernate中getCurrentSession和openSession区别 简述hibernate的乐观锁和悲观锁 简述hibernate的懒加载机制 简述hibernate...

wu1317581750的博客 2万+

hibernate createsqlquery delete多个表_好程序员Java教程分享Java之Hibernate常见面试题

好程序员Java教程分享Java之Hibernate常见面试题 1、hibernate的inverse属性的作用? 解决方案一,按照Object[]数据取出数据,然后自己组bean 解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1filed1,type2field2),然后在hql里面就可以直接生成这个bean...

weixin_39969881的博客 109
上一篇: hibernate缓存机制
下一篇: 乐观锁和悲观锁
VirusFu
博客等级 码龄21年 51粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值