【Java面试题】Hibernate
六、Hibernate
50)简述一下 hibernate 的开发流程
第一步:加载 hibernate 的配置文件,读取配置文件的参数(jdbc 连接参数,数据 库方言,hbm 表与对象关系映射文件) 第二步:创建 SessionFactory 会话工厂(内部有连接池) 第三步:打开 session 获取连接,构造 session 对象(一次会话维持一个数据连接, 也是一级缓存) 第四步:开启事务 第五步:进行操作 第六步:提交事务 第七步:关闭 session(会话)将连接释放第八步:关闭连接池
51)Hibernate 和 JDBC 对比
共同点:1.Java数据库操作中间件,线程不安全,显式事务处理。
不同点:
JDBC 是 SUN 公司提供一套操作数据库的规范,而Hibernate 是一个基于 jdbc 的主流持久化框架,对 JDBC 访问数据库的代码做了封装。
使用的SQL语言不同:JDBC 使用的是基于关系型数据库的标准 SQL 语言,Hibernate 使用的是 HQL(Hibernate query language)语言。
操作的对象不同:JDBC 操作的是数据,将数据通过 SQL 语句直接传送到数据库中执行,Hibernate 操作的是持久化对象,由底层持久化对象的数据更新到数据库中。
数据状态不同:
JDBC 操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致, 而 Hibernate 操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。
52)说说 hibernate 的三种状态之间如何转换?
hibernate 的三种状态是瞬时状态、持久状态、托管状态:
比如有一个 User 实体类和一张 User 表。当 new 了一个 user 对象,但没有开启事务。此时 user就处于瞬时状态,与数据库的数据没有任何联系,
当开启事务后,执行了 session.save()方法后,session 缓存中存放了该 user 对象,而数据库中也有相应的这条数据,此时就转换为持久状态。
当事务提交后,session 被销毁。session 缓存中就没有 user 对象,而数据库表中有相应记录,此时为托管状态。
53)如何搭建一个 Hibernate 的环境
先导入 jar 包与配置文件、hibernate 启动 session 的工具类。
在配置文件中配置数据库的基本信息与数据库方言
进行测试,先创建实体类和数据库中的表。创建映射文件,命名规则是 实体类名.hbm.xml。位置要与实体类同一包下。在映射文件中配置 实体类与数据库表之间的映射关系。在hibernate.cfg.xml 配置文件中添加映射文件的路径。
通过 hibernate 的工具类创建 sessionfactory,通过工厂创建 session 对象,通过 session 开启事务, 进行数据操作后,事务提交。
【Java面试题】Hibernate的更多相关文章
- 最全最新java面试题系列全家桶(带答案)
最全最新java面试题系列全家桶(带答案) 置顶 2019年04月06日 22:40:28 青春季风暴 阅读数 14082 文章标签: java面试题技术栈 更多 分类专栏: 面试 版权声明:本文 ...
- Java面试题:Hibernate的二级缓存与Hibernate多表查询
我们来看两个有关Java框架之Hibernate的面试题,这是关于Hibernate的常考知识点. 1.请介绍一下Hibernate的二级缓存 解题按照以下思路来回答: (1)首先说清楚什么是缓存: ...
- 大公司的Java面试题集
找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...
- 收集了50道基础的java面试题
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...
- java笔试题13-11-21
中xxx科技公司java笔试题 今天去参加一个公司的面试,去先做了一份笔试题,妈的,太他妈难了(对于我来说,最后做完一个员工说你是不是投错简历了,都是空白,我说我做的大部分都对了..最后面试都没有,就 ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- JAVA面试题二
JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...
- Java面试题合集(一)
接下来几篇文章准备系统整理一下有关Java的面试题,分为基础篇,javaweb篇,框架篇,数据库篇,多线程篇,并发篇,算法篇等等,陆续更新中. 其他方面如前端后端等等的面试题也在整理中,都会有的. 所 ...
- Java面试题全集(上-中-下)及Java面试题集(1-50/51-70)
阅读量超百万级的文章,收藏并分享一下.感谢原创作者的总结 对初中级java开发人员有特别大的帮助,不论是技术点面试还是知识点总结上. Java面试题全集(上): https://blog.cs ...
- Java面试题之基础篇概览
Java面试题之基础篇概览 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,且public的类名必须与文件名相一致. 2.Ja ...
随机推荐
- Jsp+Servlet实现文件上传下载(三)--删除上传文件
接着上一篇讲: Jsp+Servlet实现文件上传下载(二)--文件列表展示点击打开链接 本章来实现一下删除已上传文件,同时优化了一下第一章中的代码. 废话少说,上代码 --------------- ...
- 《系列二》-- 3、FactoryBean 的使用
目录 FactoryBean 解决的问题 FactoryBean 接口初识 改造结果 最后的补充 回顾下 FactoryBean 的应用 factory-method 和 factory-bean 的 ...
- 编译 windows 上的 qt 静态库
记录命令行编译过程: 针对 Qt 5.15.2 版本, 只需要 Source 文件就行 打开 x86 Native Tools Command Prompt for VS 2019,如果需要编译 x6 ...
- 以二进制文件安装K8S之环境准备
为了k8s集群能正常运行,需要先完成4项准备工作: 1.关闭防火墙 2.禁用SeLinux 3.关闭Swap 4.安装Docker 关闭防火墙 # 查看防火墙状态 getenforce #关闭防火墙, ...
- Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程
前言 基于linux的驱动开发学习笔记,本篇是描述了一个字符驱动的基础开发流程,以便做嵌入式开发多年的应用或者系统学习驱动开发. 笔者自身情况 笔者拥有硬件基础,单片机软硬基础,linux ...
- 使用俩个链接在一起的容器运行wordpress
# 问题,如何分离mysql和wordpress,使它们每个都单独运行一个容器. # 解决办法:运行时通过--link选项使它们链接在一起 --link <container_name>: ...
- 在Windows环境中配置使用我们搭建的DNS服务器
1.修改网卡的设置,首选DNS用我们自己的 2.在命令行中测试 专业的nslookup 3.已知的问题 每次在DNS服务器的web界面中,修改了解析,必须用docker restart dns命令,把 ...
- 【Azure 事件中心】如何查看Event Hub的生产者或者是消费者端的IP地址呢?
问题描述 哪些客户端 IP 正在向/从Azure Event Hub发送/接收事件?如何来查看Event Hub的生产者端,消费者端的IP地址呢? 问题解答 如果需要查看Event Hub 服务端的日 ...
- C#---串口调试助手
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin ...
- Codeforces Round 914 (Div. 2)A~C
A 反过来考虑,由皇后和国王的位置去寻找骑士的位置,当一个点既可以被皇后找到,也可以被国王找到时就说明这个点是满足条件的 #include <bits/stdc++.h> #define ...