Java相关课程系列笔记之十四Hibernate学习笔记.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,主要用于简化Java应用程序对数据库的访问。它提供了一种在Java对象和数据库记录之间进行映射的机制,使得开发者无需关注底层的SQL语句,而是以面向对象的方式来操作数据。 **一、Hibernate的概述** 1.1 Hibernate框架的作用 Hibernate的核心作用在于消除Java程序与数据库之间的直接耦合,通过对象-关系映射技术将Java类与数据库表对应,让开发者能用面向对象的方式处理数据,提高了开发效率。 1.2 Hibernate访问数据库的优点 - 提高开发效率:Hibernate自动处理SQL的生成和执行,使开发者可以专注于业务逻辑。 - 数据独立性:通过配置文件实现数据库无关性,方便切换不同数据库。 - 缓存机制:内置的二级缓存机制提高数据读取速度,减少对数据库的频繁访问。 - 支持复杂查询:支持HQL(Hibernate Query Language)和Criteria API,使得查询更灵活。 1.3 JDBC访问数据库的缺点 - 手动编写SQL语句,容易出错且不易维护。 - 数据库连接管理繁琐,需要手动关闭。 - 缺乏事务管理和对象持久化支持。 1.4 Hibernate的设计思想 Hibernate基于POJO(Plain Old Java Object)设计,采用元数据来描述对象和数据库表的关系,实现了对象的持久化,同时引入了查询语言HQL和Criteria API,实现了数据库操作的面向对象化。 **二、Hibernate的基本使用** 2.1 Hibernate的主要结构 主要包括SessionFactory、Session、Transaction等核心组件,以及Configuration、实体类、映射文件等组成部分。 2.2 Hibernate的主要API - Configuration:用于配置Hibernate,创建SessionFactory。 - SessionFactory:是线程安全的,用于创建Session实例。 - Session:是数据库会话,用于执行CRUD操作。 - Transaction:负责事务处理。 2.3 Hibernate使用步骤 - 配置Hibernate:通过hibernate.cfg.xml文件配置数据库连接等信息。 - 创建SessionFactory:使用Configuration加载配置并创建SessionFactory。 - 获取Session:通过SessionFactory创建Session实例。 - 开启事务:使用Session的beginTransaction()方法。 - 执行操作:增删改查操作,如save(), get(), update(), delete()。 - 提交事务:使用Session的commit()方法。 - 关闭资源:关闭Session和SessionFactory。 2.4 HQL语句(简要介绍) HQL是Hibernate的查询语言,类似SQL,但操作对象是Java对象,支持条件、聚合、分组等高级查询。 **三、数据映射类型** 3.1 映射类型的作用 映射类型定义了Java对象的属性如何与数据库字段对应,确保数据的正确存储和读取。 3.2 type映射类型的两种写法 - XML映射:在实体类的.hbm.xml文件中定义。 - 注解映射:在实体类的Java代码中使用注解进行映射。 **四、Hibernate主键生成方式** 4.1 五种生成方式 - assigned:由应用手动指定。 - identity:数据库自增,如MySQL的 AUTO_INCREMENT。 - sequence:使用数据库序列,如Oracle。 - hilo:基于Hi/Lo算法的生成器,高效且避免数据库序列的开销。 - native:根据数据库类型选择合适的方式。 **五、Hibernate基本特性** - 对象-关系映射:提供了一种将Java对象模型与关系数据库模型之间的映射机制。 - 支持延迟加载:只有在真正需要数据时才从数据库加载,提高了性能。 - 支持多对一、一对多、多对多等各种关联关系。 - 支持级联操作:可以一次处理整个对象树,避免了手动处理关联关系。 - 异步操作:可通过Future或Callback接口实现非阻塞式数据库操作。 - 支持CGLIB和JPA规范,兼容性好。 总结起来,Hibernate作为Java ORM框架,通过简化数据库操作、提供对象化的查询方式,极大地提升了开发效率,同时也提供了丰富的特性以适应各种复杂的数据库应用场景。通过学习Hibernate,开发者能够更好地理解和掌握Java中的持久化技术,提升软件开发的质量和效率。
- 粉丝: 9
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助