面试题集锦-hibernate

2023-05-16

hibernate

  • 1. 什么是 ORM 框架?
  • 2. 为什么要使用 hibernate?
  • 3. hibernate 中如何在控制台查看打印的 SQL 语句?
  • 4. hibernate 有几种查询方式?
  • 5. hibernate 实体类可以被定义为 final 吗?
  • 6. 在 hibernate 中使用 Integer 和 int 做映射有什么区别?
  • 7. hibernate 是如何工作的?
  • 8. get()和 load()的区别?
  • 9. 说一下 hibernate 的缓存机制?
  • 10. hibernate 对象有哪些状态?
  • 11. 在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?
  • 12. hibernate 实体类必须要有无参构造函数吗?为什么?
  • 13. jpa 和 hibernate 有什么区别?

1. 什么是 ORM 框架?

ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。

使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。

2. 为什么要使用 hibernate?

hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。
hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。
可以很方便的进行数据库的移植工作。
提供了缓存机制,是程序执行更改的高效。

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

在 Config 里面把 hibernate. show_SQL 设置为 true 就可以。但不建议开启,开启之后会降低程序的运行效率。

4. hibernate 有几种查询方式?

三种:hql、原生 SQL、条件查询 Criteria。

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

实体类可以定义为 final 类,但这样的话就不能使用 hibernate 代理模式下的延迟关联提供性能了,所以不建议定义实体类为 final。

6. 在 hibernate 中使用 Integer 和 int 做映射有什么区别?

Integer 类型为对象,它的值允许为 null,而 int 属于基础数据类型,值不能为 null。

7. hibernate 是如何工作的?

读取并解析配置文件。
读取并解析映射文件,创建 SessionFactory。
打开 Session。
创建事务。
进行持久化操作。
提交事务。
关闭 Session。
关闭 SessionFactory。

8. get()和 load()的区别?

数据查询时,没有 OID 指定的对象,get() 返回 null;load() 返回一个代理对象。
load()支持延迟加载;get() 不支持延迟加载。

9. 说一下 hibernate 的缓存机制?

hibernate 常用的缓存有一级缓存和二级缓存:

一级缓存:也叫 Session 缓存,只在 Session 作用范围内有效,不需要用户干涉,由 hibernate 自身维护,可以通过:evict(object)清除 object 的缓存;clear()清除一级缓存中的所有缓存;flush()刷出缓存;

二级缓存:应用级别的缓存,在所有 Session 中都有效,支持配置第三方的缓存,如:EhCache。

10. hibernate 对象有哪些状态?

临时/瞬时状态:直接 new 出来的对象,该对象还没被持久化(没保存在数据库中),不受 Session 管理。
持久化状态:当调用 Session 的 save/saveOrupdate/get/load/list 等方法的时候,对象就是持久化状态。
游离状态:Session 关闭之后对象就是游离状态。

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

getCurrentSession 会绑定当前线程,而 openSession 则不会。
getCurrentSession 事务是 Spring 控制的,并且不需要手动关闭,而 openSession 需要我们自己手动开启和提交事务。

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

hibernate 中每个实体类必须提供一个无参构造函数,因为 hibernate 框架要使用 reflection api,通过调用 ClassnewInstance() 来创建实体类的实例,如果没有无参的构造函数就会抛出异常。

13. jpa 和 hibernate 有什么区别?

jpa 全称 Java Persistence API,是 Java 持久化接口规范,hibernate 属于 jpa 的具体实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试题集锦-hibernate 的相关文章

随机推荐

  • 经典书刊推荐

    剑指offer 大话设计模式 mysql必知必会 程序员面试金典 java并发编程实战 计算机操作系统第三版 计算机网络 深入理解java虚拟机 java编程思想 Java数据结构和算法中文第二版 Spring技术内幕 xff1a 深入解析
  • 深入理解java序列化和反序列化

    目录 1 定义2 方法3 自定义的序列化和反序列化策略4 为什么必须实现Serializable4 使用场景5 总结 1 定义 Java序列化是指把Java对象转换为字节序列的过程 xff1b Java反序列化是指把字节序列恢复为Java对
  • 秒杀系统之超买问题详解

    目录 1 场景2 方法3 总结 1 场景 假设现在库存只有一个商品了 xff0c 多线程下如何保证最后库存是0而不是负数 2 方法 MySQL中的排他锁 update goods set num span class token opera
  • java乐观锁之CAS原理解析

    目录 含义原理分析CPU原语CAS缺陷ABA问题循环时间长开销大只能对单个共享变量保证原子性操作 含义 CAS CompareAndSwap 即比较并替换 xff0c 实现并发算法时常用到的一种技术 CAS操作包含三个操作数 内存位置 预期
  • 常用词汇

    deutsch 发音 xff1a d t 含义 xff1a adj lt 德 gt 德国的 实例 You know Deutsch is so rational it emphases whole structure and logics
  • 什么是MybatisPlus

    简介 MybatisPlus是一个用来简化Mybatis的持久层框架 xff0c 与其具有类似作用的框架还有JPA tk mapper 特性 无侵入 xff1a 只做增强不做改变 xff0c 引入它不会对现有工程产生影响损耗小 xff1a
  • 策略模式

    简介 策略模式就是把各个平等的具体实现进行抽象 封装成为独立的算法类 xff0c 然后通过上下文和具体的算法类来进行交互 各个策略算法都是平等的 xff0c 地位是一样的 xff0c 正是由于各个算法的平等性 xff0c 所以它们才是可以相
  • elasticsearch(一)

    倒排索引 又叫反向索引 生活场景 背诵诗词 普通索引是 key gt 诗歌名称 xff1b value gt 诗歌内容 倒排索引是 key gt 诗歌内容里面的字 value gt 诗歌内容 索引压缩 索引量暴增 xff1a 倒排索引一首诗
  • 智慧定律

    二八定律 抓住主要矛盾 xff1a 用20 的付出赢得80 的收益 管理学界所熟知的二八法则 即80 的公司利润来自20 的重要客户 xff0c 其余20 的利润则来自80 的普通客户 经济学 社会上20 的人占有80 的社会财富
  • worktree简单使用

    作用 git worktree 从一个仓库中可以创建多个工作目录 xff0c 方便多开编辑器并行开发 使用 创建worktree git worktree add b bugfix 100 tmpworktree jghctaskbugfi
  • 2020-11-12

    GC 算法 Java中的垃圾回收是根据可达性分析算法来判断对象是否存活的 这个算法的基本思路就是通过一系列的称为 34 GC Roots 34 的对象作为起始点 xff0c 从这些节点开始向下搜索 xff0c 搜索所走过的路径称为引用链 x
  • 2020-11-12

    WeakReferenceMonitor 源码位置 org springframework util WeakReferenceMonitor 解析 span class token comment Start to monitor giv
  • 面试题集锦-多线程

    多线程 1 并行和并发有什么区别 xff1f 2 线程和进程的区别 xff1f 3 守护线程是什么 xff1f 4 创建线程有哪几种方式 xff1f 5 说一下 runnable 和 callable 有什么区别 xff1f 6 线程有哪些
  • 面试题集锦-javaWeb

    javaWeb 1 JSP 和 servlet 有什么区别 xff1f 2 JSP 有哪些内置对象 xff1f 作用分别是什么 xff1f 3 说一下 JSP 的 4 种作用域 xff1f 4 session 和 cookie 有什么区别
  • 面试题集锦-网络

    目录 1 http 响应码2 forward 和 redirect 的区别 xff1f 3 简述 tcp 和 udp的区别 xff1f 4 说一下 tcp 粘包是怎么产生的 xff1f 5 OSI 的七层模型都有哪些 xff1f 6 get
  • 面试题集锦-设计模式

    设计模式 1 说一下你熟悉的设计模式 xff1f 2 简单工厂和抽象工厂有什么区别 xff1f 1 说一下你熟悉的设计模式 xff1f 单例模式 xff1a 保证被创建一次 xff0c 节省系统开销 工厂模式 xff08 简单工厂 抽象工厂
  • 服务器配置ssh(centos7)

    服务器配置 centos7 span class hljs title vim etc ssh sshd config span span class hljs comment br 禁用root账户登录 xff0c 如果是用root用户登
  • 面试题集锦-Spring/SpringMVC

    Spring SpringMVC 1 为什么要使用 spring xff1f 2 解释一下什么是 aop xff1f 3 解释一下什么是 ioc xff1f 4 spring 有哪些主要模块 xff1f 5 spring 常用的注入方式有哪
  • 面试题集锦-SpringBoot

    spring boot 1 什么是 spring boot xff1f 2 为什么要用 spring boot xff1f 3 spring boot 核心配置文件是什么 xff1f 4 spring boot 配置文件有哪几种类型 xff
  • 面试题集锦-hibernate

    hibernate 1 什么是 ORM 框架 xff1f 2 为什么要使用 hibernate xff1f 3 hibernate 中如何在控制台查看打印的 SQL 语句 xff1f 4 hibernate 有几种查询方式 xff1f 5