马士兵hibernate学习笔记
### 马士兵 Hibernate 学习笔记概览 #### 一、Hello World 示例与环境搭建 - **Hello World 示例**:本部分通过一个简单的示例介绍了如何使用 Hibernate 实现 Java 对象与数据库之间的持久化操作。 - **步骤概述**: 1. 创建一个新的 Java 项目 `hibernate_0100_HelloWorld`。 2. 设置用户库(User-library-hibernate),并添加必需的 JAR 包。 3. 引入 MySQL 的 JDBC 驱动包。 4. 在 MySQL 数据库中创建对应的数据库和表。 5. 编写 `hibernate.cfg.xml` 配置文件。 6. 定义 `Student` 类。 7. 创建 `Student` 映射文件 `Student.hbm.xml`。 8. 在 `hibernate.cfg.xml` 中引用映射文件。 9. 编写测试类 `Main`,实现对 `Student` 对象的存储测试。 - **Annotation 版本的 Hello World**: - **实现步骤**: 1. 创建 MySQL 表 `teacher`。 2. 定义 `Teacher` 类,并添加必要的注解。 3. 添加 Hibernate Annotation 相关的 JAR 包。 4. 修改 `hibernate.cfg.xml` 文件,支持 Annotation 配置。 5. 编写测试代码,验证功能实现。 #### 二、O/R Mapping 概念及重要性 - **概念解释**: - O/R Mapping (Object-Relational Mapping) 是一种编程技术,用于将关系型数据库中的数据映射为面向对象语言中的对象。 - **必要性**: - JDBC 操作繁琐,需要编写大量的 SQL 语句。 - 面向过程的 SQL 与面向对象的 Java 代码风格不一致。 - 通过 O/R Mapping 可以简化这些操作,使开发人员能够更加专注于业务逻辑而不是数据访问逻辑。 - 跨数据库平台的支持,提高代码的可移植性和可维护性。 #### 三、常见的 O/R Mapping 框架 - **常见框架介绍**: - **Hibernate**:广泛使用的 Java ORM 框架,提供了丰富的 API 和工具支持。 - **TopLink**:Oracle 公司推出的企业级 ORM 解决方案,现已集成至 Oracle WebLogic Server。 - **JDO (Java Data Objects)**:一种轻量级的数据持久化解决方案,主要用于 Java 应用程序。 - **JPA (Java Persistence API)**:Java 平台上的一种规范,用于提供统一的数据持久化接口。 #### 四、Hibernate 基础配置详解 - **配置要点**: - **项目搭建**:项目名为 `Hibernate_0300_BasicConfiguration`。 - **MySQL 图形化客户端**:推荐使用 Navicat 或 DBeaver 进行数据库操作。 - **配置文件详解**: - **hibernate.cfg.xml**: - `hbm2ddl.auto`:控制 Hibernate 自动创建、更新或删除数据库表的行为。 - `show_sql`:设置为 true 后,Hibernate 将在控制台打印出执行的 SQL 语句。 - `format_sql`:设置为 true 后,SQL 语句将以更易读的格式打印。 - **表名配置**:当表名和类名不一致时,需要在映射文件或注解中指定正确的表名。 - **字段名配置**: - 当字段名和属性名一致时,通常不需要额外配置。 - 当不一致时,需在映射文件或注解中指定对应的字段名。 - **日期和时间类型映射**:使用 Hibernate 提供的时间类型进行映射。 - **枚举类型映射**:虽然较少使用,但 Hibernate 支持枚举类型的映射。 - **字段映射位置**:可以选择在字段或 getter 方法上添加映射注解。 #### 五、ID 生成策略 - **策略介绍**: - **XML 方式**:在 XML 映射文件中指定 ID 生成策略。 - **注解方式**:使用 `@GeneratedValue` 注解。 - **联合主键**:在某些情况下,可能需要使用多个字段作为主键。 #### 六、Hibernate 核心开发接口 - **接口简介**: - **Configuration**:负责加载配置文件,初始化 SessionFactory。 - **SessionFactory**:用于创建 Session 对象。 - **Session**:代表与数据库的一次会话,是执行 CRUD 操作的主要场所。 - **SchemaExport**:用于自动生成数据库表结构。 - **Query**:用于执行 HQL 查询语句。 #### 七、对象的三种状态 - **状态解析**: - **瞬时态 (Transient)**:对象尚未被 Hibernate 会话管理。 - **持久态 (Persistent)**:对象被 Hibernate 会话管理,任何对其属性的修改都将被保存到数据库。 - **游离态 (Detached)**:对象曾经被 Hibernate 会话管理,但现在不再管理。 #### 八、关系映射 - **关系映射**:在 Hibernate 中,可以通过多种方式来实现实体间的关联关系映射,如一对一、一对多、多对多等。 #### 九、Hibernate 查询(HQL) - **查询语言**:Hibernate Query Language (HQL) 是一种面向对象的查询语言,允许开发者使用 Java 对象语法来查询数据库。 #### 十、性能优化 - **优化技巧**: - 选择合适的缓存策略。 - 使用懒加载减少不必要的数据库交互。 - 优化查询语句和索引设计。 - 适当使用批处理和事务管理。 - 调整 Hibernate 配置参数以适应应用特性。 以上内容为马士兵 Hibernate 学习笔记的核心知识点总结,旨在帮助读者快速掌握 Hibernate 的基本使用方法和高级特性。通过实践这些知识点,可以大大提高使用 Hibernate 进行数据持久化的效率和质量。
- 粉丝: 44
- 资源: 47
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 官网下载的VSCode和中文语言包, VSCodeUserSetup-x64-1.92.2.exe
- 全国高校计算机能力挑战赛往届真题整理.zip
- HandyDoc:HandyControl 的离线文档
- 202210120219+朱羡彬+软件工程实验一.docx
- C# 工厂模式开发示例,详细展示三种工厂模式
- Python大作业:基于OpenCV模板匹配的数字识别
- AI 绘画工具 Stable Diffusion 的换脸插件ReActor所使用的codeformer.pth 权重文件
- RDC小计的材料等等等等
- 振宇日语·最好用最好记15000日语单词随身背 (李晓东) (Z-Library).epub
- led-tcp-mastc