Hibernate持久化详解:对象操作与表管理
需积分: 0 163 浏览量
更新于2024-08-23
收藏 7.15MB PPT 举报
在Java应用程序中,对象的持久化是将对象的状态和数据持久地存储在数据库中的一项关键任务。Hibernate是一个广泛使用的ORM(对象关系映射)框架,它简化了这个过程,使得开发者能够更专注于业务逻辑,而不是底层的数据库操作。Hibernate通过定义映射文件(如HBM.xml或XML注解)来实现对象和数据库表之间的关系。
**狭义的持久化与数据库操作:**
- **保存(Save)**: 当对象实例化后,可以通过Session对象调用save()方法将其状态保存到数据库。例如,代码片段展示了如何创建并保存Customer和Order对象。
**广义的持久化:**
- **更新(Update)**: 对已有对象的修改会被同步到数据库中。当对象的某个字段被改变,调用update()方法即可更新对应的数据库记录。
- **删除(Delete)**: 使用delete()方法可以移除数据库中的对象。比如,Customer对象的引用被设置为null时,其对应的Order对象将被自动删除。
- **查询(Query)**: Hibernate提供强大的查询功能,开发者可以通过Criteria API、HQL(Hibernate Query Language)或JPQL(Java Persistence Query Language)来检索满足特定条件的对象。
- **加载(Load)**: 通过OID(对象标识符),load()方法可以从数据库中获取并加载对象到内存中,这对于懒加载策略至关重要。
**Hibernate的hbm2ddl.auto属性:**
- `create`: 在第一次运行时,会根据模型类生成数据库表,如果表已存在则删除后重新创建。这在开发阶段可能有用,但不适合生产环境,因为可能会频繁地删除现有表。
- `create-drop`: 类似于`create`,但在SessionFactory关闭时自动删除表,适合测试环境。
- `update`: 这是最常用的选择,它根据模型类动态更新表结构,即使表结构变化,已有的数据也不会丢失。
- `validate`: 检查数据库中的表结构是否与模型类一致,不创建新表,但会在数据库中插入新值。
对于一对一关联的处理:
- **延迟加载(Lazy Loading)**: 如果选择延迟加载策略,对于一对一关联,`<one-to-one>`元素的`constrained`属性应设置为`true`。这个属性与`<many-to-one>`元素的`not-null`属性相似,确保了Order对象总是关联着一个Customer对象,不允许customer属性为null。
总结来说,Hibernate通过提供对象持久化和轻量级的数据访问方式,极大地简化了Java应用与数据库的交互。理解这些核心概念和配置选项,有助于开发者更高效地管理对象和数据库之间的映射,实现更灵活、可靠的数据库操作。
2019-08-04 上传
2019-08-12 上传
559 浏览量
2021-05-31 上传
2011-11-30 上传
2011-03-15 上传
2021-06-28 上传
2021-02-22 上传
杜浩明
- 粉丝: 14
- 资源: 2万+
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器