hibernate--简介

本文介绍Hibernate框架的基本概念,包括其优点、缺点以及五个核心接口。深入探讨Hibernate如何简化数据库操作,提升开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Hibernate简介

1、什么是Hibernate
  
Hibernate是数据持久层的一个开源的orm(Object relations mapping)轻量级框架,提供查询获取数据的方法用面向对象思想操作数据库,节省开发处理数据的时间。

2、Hibernate的优点
  
1)、使用hql语句(Hibernate query language)。可以不用传统的insert,update等sql语句。比如insert一个对象,原来的做法是:insert into 表名称 value(值1,值2,值3,……),而现在的做法是:save(对象)。
2)、使用ORM映射。对象到关系数据库之间的映射,从对象的角度操作数据库,再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而现在Hibernate做法是:直接由对象映射到表
3)、移植性较好。Hibernate采用pojo对象,即没有继承Hibernate类或实现Hibernate接口,此类就是一个普通的java类。
4)、支持透明持久化。透明是针对上层而言的,三层架构的透明理念是上层对下层的依赖,只是依赖接口不依赖具体实现。而Hibernate中的透明是指对业务逻辑层提供一个接口session,而其他的都封装隐藏。持久化就是把缓存中的东西放到数据库中使之持久。
/*持久化:
对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.
临时状态:刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象.
持久化状态:已经被持久化,加入到session的缓存中.处于持久化的java对象被称为持久化对象.
游离状态:已经被持久化,但不处于session的缓存中,处于游离状态的java对象被成为游离对象.
持久化对象的特征:
| 位于一个session事例的缓存中,可以说持久化对象总是被一个session事例关联
| 持久化对象和数据库中的相关记录对应
| Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库
| Session的save()方法把临时状态变为持久化状态
*/

3、Hibernate的缺点。

1)由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate。
2)框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,比如300张表以上,配置文件和内容是非常庞大的,另外,DTO(Data Transfer Object)满天飞,性能和维护问题随之而来。
3)如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。一个持久化对象不能映射到多张表中。
4)Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate

4、Hibernate的5个核心接口

1)、Configuration接口:负责**配置及启动**Hibernate,用来**创建sessionFactory**

2)、SessionFactory接口:一个SessionFactory对应一个数据源存储,也就是一个数据库对应一个SessionFactory。SessionFactory用来创建Session对象。且SessionFactory线程安全,可以由多个线程访问SessionFactory共享。

3)、Session接口:Hibernate常用接口,主要用于对数据的操作(增删改查)。而这个Session对象非线程安全,不能共享。

4)、Query接口:用于数据库的查询对象。
内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则和命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式和控制符号在多条物理通道上的一致性和正确性。文档还涵盖了链路性能监控和错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计和实现支持多种数据速率和编码方式的InfiniBand设备;② 开发链路初始化和训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控和错误检测,提高系统的可靠性和稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考和技术交流使用。文档内容详尽,对于理解和实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解和应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值