Hibernate框架【一】——HIbernate框架介绍

news2025/1/11 14:00:33

系列文章目录

Hibernate框架【三】——基本映射——一对一映射
Hibernate框架【四】——基本映射——多对一和一对多映射
Hibernate框架【五】——基本映射——多对多映射


Hibernate框架介绍

  • 系列文章目录
  • 前言
  • 一、什么是HIbernate框架
    • Hibernate架构图
    • Hibernate提供的核心功能和特性
  • 二、Hibernate框架的优点
  • 三、Hibernate框架的缺点
  • 四、Hibernate、jpa、jdbc他们三者之间是什么关系


前言

Hibernate是一个开源的Java对象关系映射(ORM)框架,它提供了一种方便的方式将Java对象与关系型数据库进行映射和交互。通过Hibernate,开发人员可以使用面向对象的方式操作数据库,而不需要直接编写SQL查询语句


一、什么是HIbernate框架

Hibernate架构图

引用至W3C
在这里插入图片描述
Hibernate是一个开源的对象关系映射(ORM)框架,用于将Java对象映射到关系型数据库中的关系表。
它提供了一种面向对象的方式来操作数据库,简化了开发人员对数据库的访问和管理。

如何理解提供了一种面向对象的方式来操作数据库。

一方面:Hibernate可以将定义好的java类映射为数据库中的表,并将java类的实例化的对象,映射为对应表中的一行记录。
另一方面:使用Hibernate,开发人员可以直接操作对象,不需要编写复杂的SQL语句。通过对象的属性和方法来进行数据的读取、修改和删除等操作。

Hibernate提供的核心功能和特性

  1. ORM映射(可以将java对象与数据库表之间进行映射,实现对象和关系数据库之间的转换,支持各种映射策略和注解);

  2. 数据库查询(提供了一组丰富的API,用于执行数据库操作,包括插入、更新、删除、查询,还支持HQL和基于SQL的查询一级Criteria查询和原生SQL查询);

  3. 缓存机制(Hibernate内置了一级缓存和二级缓存机制,用于提供查询性能和减少数据库的访问。一级缓存是会话级别的缓存,保存了会话期间加载的实体对象。二级缓存是跨会话的缓存,可以在多个会话之间共享缓存数据);

  4. 事物管理(可以通过编程或声明式的方式管理数据库事物。支持标准的java事物API(JTA)和本地事物管理);

  5. 延迟加载(允许按需加载关联对象,提高查询性能。这意味着只有在需要访问关联对象时,才会从数据库中加载相应的数据。);

  6. 对象状态管理(通过跟踪对象的状态来管理对象的持久化。它提供了持久化、脱管和删除等状态之间的转换,使开发人员能够方便地操作对象。)

二、Hibernate框架的优点

  1. 使开发更加面向对象化:Hibernate提供了一个面向对象的编程模型,使开发人员可以使用面向对象的思想来操作数据库。
  2. 提高开发效率:Hibernate提供了许多强大的特性和工具:如自动生成数据库表结构,提供了公共的操作数据库的方法,让开发人员不用写SQL语句、缓存机制、事物管理。可以大大减少开发人员的工作量,提高开发效率。
  3. 可移植性:Hibernate可以在不同的数据库系统上运行,如Mysql、Oracle、SQL Server等,开发人员可以使用统一的API和语法,无需关系底层数据库的差异。

三、Hibernate框架的缺点

  1. 学习曲线较陡:Hibernate是一个复杂的框架,具有丰富的功能和概念,对于新手来说,学习和掌握Hibernate需要一定的时间和精力。
  2. 性能问题:尽管Hibernate提供了缓存和懒加载等优化机制,但是不正确配置或者过度使用HIbernate的功能可能会导致性能问题。自动生成的SQL查询语句可能不总是最优的,并且过多的查询和数据加载可能会影响性能。
  3. 复杂性和难以调试:Hibernate的复杂性可能导致难以调适和排查问题。在配置和映射关系方面的错误可能导致不明确的异常和行为。对于复杂的查询和关联关系,编写和优化 Hibernate 查询语句可能需要更高的技术水平。
  4. 于简单应用可能过于重量级:Hibernate 是一个功能强大的框架,适用于中大型应用程序,但对于简单的应用程序来说,可能会觉得过于笨重。在某些情况下,直接使用相对轻量级的 ORM框架更为合适。

需要注意的是:Hibernate 的优点远远超过了其缺点,并且许多缺点可以通过良好的配置和最佳实践来解决。它是一个成熟的 ORM 框架,被广泛使用,并且提供了许多有价值的功能和特性,可大大简化数据库操作和提高开发效率。

四、Hibernate、jpa、jdbc他们三者之间是什么关系

  1. jdbc:jdbc是Java提供的用于与关系型数据库进行交互的标准API,它提供了一组接口和类,使开发人员能够执行数据库的连接、查询、更新等操作。JDBC 需要开发人员手动编写 SQL 查询和处理数据库结果集,对于较低层次的数据库操作提供了灵活性。使开发人员能够执行数据库的连接、查询、更新等操作。JDBC 需要开发人员手动编写 SQL 查询和处理数据库结果集,对于较低层次的数据库操作提供了灵活性。
  2. JPA:JPA是Java持久化标准,定义了一组API和规范,提供了一种与数据库无关的方式来操作实体对象。JPA定义了实体、映射关系、查询语言和事物管理等方面的规范,使开发人员能够以面向对象的方式进行数据库的操作。
  3. Hibernate:Hibernate实现了JPA规范,同时还提供了一些额外的功能和特性。Hibernate封装了底层的JDBC操作,提供了更高层次的抽象,来简化开发人员对数据库的访问。通过HIbernate开发人员可以通过配置和注解来定义实体和映射关系,使用面向对象的方式进行数据库操作。

Hibernate 是 JPA 的实现之一,而 JPA 则是对数据库持久化操作的规范。JDBC 是底层的数据库连接和操作技术,Hibernate 和 JPA 则在 JDBC 的基础上提供了更高层次的抽象和便利性,使得开发人员能够以面向对象的方式进行数据库操作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php-xhprof 学习历程

听说 php-xhprof 可以分析网站的性能。今天闲来无事,就学习了一下。 1、安装(万事都得从安装开始) #首先,他是需要 graphviz 支持的。所以,我们得先安装这个依赖 yum install graphviz #就只需要这一行命令即可#下载地…

【C++】函数重载及引用

目录 一、函数重载 1、函数重载的概念 2、名字修饰 二、引用 1、引用概念 2、引用特性 3、常引用 4、引用的使用场景 4.1 做参数 4.2 做返回值 5、传值、传引用效率比较 6、引用和指针的区别 一、函数重载 1、函数重载的概念 函数重载:是函数的一种特殊情况&#…

leetcode415. 字符串相加

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【LeetCode】 🍓希望我们一起努力、成长,共同进步。 题目链接 给定两个字符串形式的非负整数 num1 和num2 &#…

OpenCV项目开发实战-- 的单应性(Homography)实例Python/C++代码实现

文末附基于Python和C++两种方式实现的测试代码下载链接 什么是单应性(Homography)? 考虑图 1 中所示的平面(书的顶部)的两个图像。红点表示两个图像中的相同物理点。在计算机视觉术语中,我们称这些为对应点。图 1. 显示了四种不同颜色的四个对应点——红色、绿色、黄色和…

【运维知识进阶篇】zabbix5.0稳定版详解1(安装+部署+添加服务器+拆分数据库)

本篇文章介绍zabbix监控,监控是对我们操作系统进行不间断的监控,这是软件生命周期非常重要的一环,可以做到事前告警,事后根据监控内容排查问题(金丝雀,监控重要指标),有问题的时候&a…

chatgpt赋能python:Python安装和设置环境变量教程

Python安装和设置环境变量教程 Python是一门非常流行的编程语言,很多开发者都喜欢使用它开发各种应用程序。作为使用Python编程的开发者,你需要安装Python并设置环境变量。在本文中,我们将向你介绍如何安装Python,以及如何设置环…

c++11 标准模板(STL)(std::basic_ios)(二)

定义于头文件 <ios> template< class CharT, class Traits std::char_traits<CharT> > class basic_ios : public std::ios_base 类 std::basic_ios 提供设施&#xff0c;以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios…

Jenkins pipeline 执行工程目录里的脚本文件

jenkins 工程根目录下有一个脚本文件&#xff0c;如图所示 文件中有一个简单的输出 我们希望在jenkins pipeline 中执行这个脚本文件&#xff0c;如何配置jenkins pipe 命令呢 首先&#xff0c;要明确一点&#xff0c;我们在jenkins pipeline 中&#xff0c;默认是在Jenki…

英语中如何表达各行各业

前言 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;阿里云社区博客专家 &#x1f609;&#x1f609; &#x1f495; 座右铭&#xff1a; 先努力成长自己&#xff0c;再帮助更多的人,一起加油进…

字符串--从函数返回字符串指针

许多字符串处理函数是不需要返回值的&#xff0c;但实际上它们都被设计成了有返回值的函数。例如字符串赋值函数的函数原型为&#xff1a; char *strcpy(char *str1, const char *str2);字符串连接函数strcat()的函数原型为&#xff1b; char *strcat(char *str1,const char …

springboot+vue+java旅行社旅游网站g748u

使用Spring作为项目管理工具对系统的设计与实现各个模块进行管理,优化代码结构。后台采用Java语言开发,前台页面和后台管理页面使用Bootstrap,JSP,JavaScript,HTML,CSS等技术开发,使用MySql作为数据持久化存储工具对系统的设计与实现的用户等角色权限对应的功能等进行存储。使用…

图像细化原理

1. 图像细化原理 Zhang-Suen 算法原理 Zhang-Suen 算法每运行一次&#xff0c; 需要遍历所有的不为0的像素。在对每个像素&#xff08;P1&#xff09;进行删除或保留的判断时&#xff0c;我们需要关注其周围的8个邻居像素&#xff08;P2, P3, P4, P5, P6, P7, P8&#xff09;的…

012、数据库管理之cluster部署

cluster部署 硬件要求操作系统要求依赖包要求部署的组件 部署集群前置检查安装TiUP组件初始化集群拓扑文件执行部署命令查看集群情况查看已部署的集群情况启动集群验证集群运行状态 启动与停止启动停止 案例讲解测试环境准备环境实施部署 硬件要求 组件CPU内存本地存储网络实例…

大学英语六级考试2022年6月真题|9:00

目录 第一套听力 第一套阅读 选词填空 长篇阅读 仔细阅读 错因 翻译 第一套听力 -7.1 * 1 14/15 -14.2 * 1 9/10 -21.3分 第一套阅读 选词填空 形容词前用副词修饰 remedy vt.修正&#xff1b;纠正 n.解决方法&#xff1b;改进措施 offspring …

TCP三次握手和TCP四次挥手

1. TCP三次握手 三次握手原理&#xff1a; 第1次握手&#xff1a;客户端发送一个带有SYN&#xff08;synchronize&#xff09;标志的数据包给服务端&#xff1b; 第2次握手&#xff1a;服务端接收成功后&#xff0c;回传一个带有SYN/ACK标志的数据包传递确认信息&#xff0c…

Linux 学习记录35(C高级篇)

Linux 学习记录35(C高级篇) 本文目录 Linux 学习记录35(C高级篇)一、linux操作系统1. 文件系统结构2. 常见的linux的发型版本>1. linux发行版和内核版的区别 二、网络配置1. 查看网络是否连接2. 网络配置>1. 保证虚拟机有桥接网络>2. 设置桥接网络>3. 重启网络服务…

MySQL数据库同步方案

一、概述&#xff1a; MYSQL主从同步架构是目前使用最多的数据库架构之一&#xff0c;主从同步使得数据可以从一个数据库服务器复制到其他服务器上&#xff0c;在复制数据时&#xff0c;一个服务器充当主服务器(master)&#xff0c;其余的服务器充当从服务器(slave)。 二、拓扑…

MySQL-SQL视图详细

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

Vue实现表情包评论

1.效果图 2.Vue 2.1 下载emo表情 可以自己去gitee上找&#xff0c;或者直接通过百度云。 链接&#xff1a;https://pan.baidu.com/s/1lsUlLhoAsy_ehQyvdhlrpA 提取码&#xff1a;u9ol &#xff08;如果你不想存在本地&#xff0c;也可以把表情包放在云上&#xff09; 2.2 放…

Linux---查看系统资源占用(top)、磁盘信息监控(df、iostat)、网络状态监控(sar)

1. 查看资源占用&#xff08;top指令&#xff09; 可以通过top命令查看CPU、内存使用情况&#xff0c;类似Windows的任务管理器。 默认每5秒刷新一次&#xff0c;语法&#xff1a;直接输入top即可&#xff0c;按q或ctrl c退出。 第一行&#xff1a; top&#xff1a;命令名称…