hibernate笔记


**Hibernate 框架详解** Hibernate 是一个开源的 Java 平台上的对象关系映射(ORM)框架,它简化了数据库操作,使开发者能够通过面向对象的方式来管理和操作数据。本笔记将深入探讨 Hibernate 的核心概念、配置、实体映射、查询语言及缓存机制。 1. **核心概念** - **对象关系映射(ORM)**: Hibernate 提供了一种桥梁,将 Java 对象与数据库中的记录关联起来,使得开发者可以避免直接编写 SQL,降低了数据库操作的复杂性。 - **Session 和 Transaction**: Session 是 Hibernate 中的主要工作单元,用于执行数据库操作。Transaction 则负责管理一组操作的原子性,确保数据的一致性。 2. **Hibernate 配置** - **hibernate.cfg.xml**: 这是 Hibernate 的主配置文件,包含了数据库连接信息、缓存设置等关键参数。 - **实体类的映射文件**: 通常以 `.hbm.xml` 结尾,定义了 Java 类与数据库表之间的映射规则。 3. **实体映射** - **@Entity**: 标记一个 Java 类为数据库表的实体。 - **@Table**: 定义实体对应的数据库表名。 - **@Id**: 标识主键字段。 - **@GeneratedValue**: 自动生成主键策略,如 `GenerationType.IDENTITY` 或 `GenerationType.AUTO`。 - **@Column**: 映射字段到数据库表的列。 4. **持久化操作** - **保存(Save)**: 通过 `Session.save()` 方法将对象添加到数据库。 - **更新(Update)**: 使用 `Session.update()` 更新已存在的对象。 - **删除(Delete)**: `Session.delete()` 方法移除数据库中的对象。 - **加载(Load)**: `Session.load()` 根据主键获取对象,如果对象不存在则抛出异常。 - **检索(Get)**: `Session.get()` 也根据主键获取对象,但对象不存在时返回 null。 5. **HQL(Hibernate Query Language)** - HQL 是 Hibernate 提供的面向对象的查询语言,类似于 SQL,但更接近 Java 语法。 - 支持 select、from、where、join、group by、order by 等子句,还可以进行聚合操作和子查询。 6. **Criteria 查询** - Criteria API 提供了一种动态构建查询的方式,无需编写字符串 HQL。 - 可以添加限制条件(Criteria.add())、排序(Criteria.setOrder())等。 7. **级联操作** - 在实体关系映射中,可以通过 `CascadeType` 设置级联操作,如 `PERSIST`, `MERGE`, `REMOVE` 等,实现对关联对象的一体化管理。 8. **缓存机制** - Hibernate 提供了第一级缓存(Session 缓存)和第二级缓存(SessionFactory 缓存),提高数据读取效率。 - 第二级缓存可使用第三方插件,如 EhCache 或 Infinispan。 9. **查询优化** - 使用 `@Fetch(FetchMode.JOIN)` 进行关联查询的预加载,避免 N+1 问题。 - 注意懒加载和立即加载的区别,避免不必要的数据加载。 - 使用批处理操作,如 `Session.flush()` 和 `Session.clear()`,减少数据库交互次数。 10. ** Hibenate 工作流程** - 加载配置并建立 SessionFactory。 - 通过 SessionFactory 创建 Session。 - 执行持久化操作,如保存、更新、删除、查询。 - 提交或回滚 Transaction。 - 关闭 Session 和 SessionFactory。 理解并熟练掌握这些知识点,将有助于你在实际开发中高效地使用 Hibernate,降低数据库操作的复杂性,提高开发效率。































- 1


- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 慕课时代教育信息化与在线课程建设的分析.docx
- 提高中职计算机课堂教学效率方法探究.docx
- 应用课题实践与项目开发训练特色课程中的软件工程实验教学.docx
- 大学设计改变物流在宝鲨旗电子商务中对策.doc
- (源码)基于PHP的文件管理器.zip
- 基于教育大数据的学、教、需反馈机制探索与实践.docx
- 计算机组装与维护课程教学大纲.doc
- 基于大数据分析的高校计算机教学探讨.docx
- EPS-reservoir软件技术介绍.doc
- 河北曹妃甸MWCIGS项目管理.doc
- 软件维保服务解决方案2018.docx
- 数据结构课网站的设计与实现毕业论文.doc
- 计算机应用中的网络安全防范策略研究.docx
- 基于单片机的温度控制系统方案设计书大学本科方案设计书.doc
- 基于单片机系统的交通灯方案设计书.doc
- 物流中心的仓储与配送自动化管理.docx


