Hibernate 框架介绍
先决条件: JDBC
Hibernate 框架的需要
Hibernate 用于克服 JDBC 的限制,例如:
- JDBC 代码依赖于所使用的数据库软件,即我们的持久性逻辑是依赖的,因为使用了 JDBC。在这里,我们将一条记录插入到 Employee 表中,但我们的查询是依赖于数据库软件的,即这里我们使用的是 MySQL。但是如果我们改变我们的数据库,那么这个查询将不起作用。
- 如果使用 JDBC,在项目中间更改数据库是非常昂贵的。
- JDBC 代码不是跨多个数据库软件的可移植代码。
- 在 JDBC 中,异常处理是强制性的。在这里我们可以看到我们正在处理大量的连接异常。
- 使用 JDBC 时,不支持对象级关系。
- 在 JDBC 中,会出现 Boilerplate 问题,即对于每个项目,我们必须编写以下代码。这增加了代码长度并降低了可读性。
为了克服上述问题,我们使用 ORM 工具,即 Hibernate 框架。通过使用 Hibernate,我们可以避免上述所有问题,并且可以享受一些额外的功能。
关于 Hibernate 框架
Hibernate 是一个提供一些抽象层的框架,这意味着程序员不必担心实现,Hibernate 会在内部为您完成实现,例如与数据库建立连接、编写查询以执行 CRUD 操作等。
它是一个用于开发持久性逻辑的Java框架。持久化逻辑意味着存储和处理数据以供长期使用。更准确地说,Hibernate 是一个开源的、非侵入性的、轻量级的Java ORM(对象关系映射)框架,用于开发独立于数据库软件的对象,并在所有Java、JEE 中制作独立的持久性逻辑。
框架意味着它是一种特殊的可安装软件,它在一种或多种技术(如 JDBC、Servlet 等)上提供抽象层,以简化或降低开发过程的复杂性。
开源意味着:
- Hibernate 框架可供所有人免费使用。
- Hibernate 的源代码在网上也有,我们也可以修改代码。
轻量级的意思:
- Hibernate 体积小意味着安装包的体积不大。
- Hibernate 不需要任何重型容器来执行。
- 它不需要 POJO 和 POJI 模型编程。
- Hibernate 可以单独使用,或者我们可以将 Hibernate 与其他Java技术和框架一起使用。
非侵入性意味着:
- Hibernate 应用程序开发的类是相对于 Hibernate API 的松散耦合类,即 Hibernate 类不需要实现 Hibernate API 接口,也不需要从 Hibernate API 类扩展。
Hibernate 框架支持的功能
- Hibernate 框架支持Auto DDL操作。在 JDBC 中,我们必须手动创建表并声明每一列的数据类型。但是 Hibernate 可以在内部为您执行DDL 操作,例如创建表、删除表、更改表等。
- Hibernate 支持自动主键生成。这意味着在 JDBC 中我们必须手动设置表的主键。但是 Hibernate 可以为您完成这项任务。
- Hibernate 框架独立于数据库,因为它支持不特定于任何数据库的HQL(Hibernate 查询语言) ,而 JDBC 是依赖于数据库的。
- 在 Hibernate 中,异常处理不是强制的,而在 JDBC 中,异常处理是强制的。
- Hibernate 支持缓存内存,而 JDBC 不支持缓存内存。
- Hibernate 是一个ORM 工具,意味着它支持对象关系映射。而 JDBC 不是面向对象的,而且我们处理的值意味着原始数据。在休眠中,每条记录都表示为一个对象,但在 JDBC 中,每条记录只不过是一个数据,它只是原始值。