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

系列文章目录

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 的基础上提供了更高层次的抽象和便利性,使得开发人员能够以面向对象的方式进行数据库操作

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MIT 6.S081 (BOOK-RISCV-REV1)教材第三章内容

MIT 6.S081 教材第三章内容 引言页表分页硬件内核地址空间物理内存分配代码(物理内存分配)kinit函数kfree函数kalloc函数 代码:创建一个地址空间kvminit 函数kvmmap函数walk函数kvminithart函数procinit函数 进程地址空间代码:sbr…

Java企业级开发学习笔记(4.4)Spring Boot加载自定义配置文件

一、使用PropertySource加载自定义配置文件 1.1 创建Spring Boot项目 创建Spring Boot项目 单击【创建】按钮 1.2 创建自定义配置文件 在resources里创建myconfig.properties文件 设置文件编码 设置学生的四个属性值 1.3 创建自定义配置类 在cn.kox.boot包里创建confi…

npm发布自己的包

按照上面流程操作

App 启动速度优化

前言​​​​​​​ APP打开的一瞬间速度快慢;就好比人的第一印象,快速的打开一个应用往往给人很舒服的体验。app经常性卡顿启动速度很慢,这无疑是对用户的流失。 启动方式介绍 APP启动的方式分为3种:冷启动、热启动、温启动。…

【服务器数据恢复】RAID5重建导致数据丢失的数据恢复案例

服务器数据恢复环境: HP某型号服务器,5块硬盘组建了一组raid5磁盘阵列。 服务器故障&分析: 服务器在工作过程中,raid5磁盘阵列中的一块磁盘掉线,由于raid5的容错特点,raid阵列未受影响,工作…

服务网格领域的百花齐放,是否存在一个更优解?

作者 lingsamuel,API7.ai 云原生技术专家,Apache APISIX Committer。作者 林志煌,API7.ai 技术工程师,Apache APISIX contributor。 服务网格是一种技术架构,它用于管理微服务系统中各个服务之间的通信,旨在…

Spring MVC入门笔记

Spring MVC基础知识 1. 创建web应用 新建Maven项目 点击File -> Project Structure -> Facets -> 号 -> Web 修改文件描述符路径为硬盘:\项目名\src\main\存储页面的文件夹(如:webapp)\WEB-INF\web.xml 修改Web页面路径为硬盘…

Spring Security --- Thymeleaf 中 Spring Security 的使用

目录 初步 获取属性 权限判断 初步 Spring Security可以在一些视图技术中进行控制显示效果例如:JSP或Thymeleaf在非前后端分离且使用Spring Boot的项目中多使用Thymeleaf作为视图展示技术Thymeleaf对Spring Security的支持都放在thymeleaf-extras-springsecurity…

数据清洗、数据处理入门!R语言我来了,数据不再零散!

一、引言 数据清洗和预处理是数据科学中必不可少的一部分,它们能够帮助我们准确地分析和预测未来趋势。如果你曾经尝试过进行分析或建模,你会发现数据往往不像我们所想象的那样干净、整洁。需要对数据进行仔细的检查、清理和处理,才能真正把…

VR全景营销颠覆传统营销模式,让商企博“出圈”

在激烈的市场竞争中,营销成为了商企博“出圈”的重要课题,随着5G的到来,VR全景迈入了快速发展时期,随着VR全景的普及应用,商业领域也逐渐引入了VR全景营销。 时下,商企的营销是越发困难,传统的营…

git安装以及git小乌龟使用

一、下载git 打开git官网地址:https://git-scm.com/进行下载 下载完安装,一直next就好,如果愿意就可以改下安装路径,改在d盘。 具体可以参考:git安装教程 二、安装完下载小乌龟以及语言包 下载地址:小乌龟…

redis到底是怎么样进行渐进式Rehash的

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。那么redis的底层是如何来存储数据的呢? 一、redis如何在存储大量的key时候,查询速度还能接近O(1)呢&#xf…

DAY 77 [ Ceph ] 基本概念、原理及架构

前言 在实现容器化的初期,计划使用 Ceph 作为容器的存储。都说存储是虚拟化之母,相对容器来说,存储也起到了至关重要的作用。 选用 Ceph 作为容器化存储理由如下: 方便后期横向扩展;Ceph能够同时支持快存储、对象存…

SF授权系统源码 V3.7全开源无加密版本

🎉 有需要的朋友记得关赞评,文章底部来交流!!! 🎉 ✨ 源码介绍 2023全新SF授权系统源码 V3.7全开源无加密版本。网站搭建很简单,大致看来一下应该域名解析后上传源码解压,访问域名/i…

全志V3S嵌入式驱动开发(u盘写读)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于现在的soc来说,基本上usb是标配的。它一般需要支持usb host、device和otg三种模式。简单解释下,host模式,就…

STM32F407移植1588v2(ptpd)

硬件: STM32F407ZGT6开发板 软件: VSCode arm-none-eabi-gcc openOCD st-link 在github搜到一个在NUCLEO-F429ZI开发板上移植ptpd的example,因为和F407差别很小,所以就打算用这个demo移植到手头的开发板上。因为目前只需要…

ASP.NET MVC下的四种验证编程方式

ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定。总地来说,我们可以采用4种不同的编程模式来进行针…

DevExpress WPF功能区控件,更轻松创建应用工具栏!(上)

DevExpress WPF的Ribbon、Toolbar和Menus组件以Microsoft Office为灵感,针对WPF开发人员进行了优化,可帮助您在段时间内模拟当今最流行的商业生产力应用程序。 DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业…

百度CDN配置TLS

概述 为了保障您互联网通信的安全性和数据完整性,百度智能云CDN提供TLS版本控制功能。您可以根据不同域名的需求,灵活地配置TLS协议版本。 TLS(Transport Layer Security)即安全传输层协议,在两个通信应用程序之间提…

LeetCode·每日一题·1177. 构建回文串检测·前缀和

作者:小迅 链接:https://leetcode.cn/problems/can-make-palindrome-from-substring/solutions/2309940/qian-zhui-he-zhu-shi-chao-ji-xiang-xi-by-n3ps/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获…