Hibernate - ORM 概述
什么是 JDBC?
JDBC 代表 Java 数据库连接。 它提供了一组 Java API 用于从 Java 程序访问关系数据库。 这些 Java API 使 Java 程序能够执行 SQL 语句并与任何符合 SQL 的数据库进行交互。
JDBC 提供了一个灵活的架构来编写一个独立于数据库的应用程序,该应用程序可以在不同的平台上运行并与不同的 DBMS 交互而无需任何修改。
JDBC 的优缺点
JDBC 的优点 | JDBC 的缺点 |
---|---|
简洁明了的SQL处理 大数据性能好 非常适合小型应用程序 语法简单易学 |
如果在大型项目中使用会很复杂 编程开销大 无封装 难以实现 MVC 概念 查询是特定于 DBMS 的 |
为什么选择对象关系映射 (ORM)?
当我们使用面向对象的系统时,对象模型和关系数据库之间存在不匹配。 RDBMS 以表格格式表示数据,而面向对象的语言(如 Java 或 C#)将其表示为对象的互连图。
考虑以下具有适当构造函数和相关公共函数的 Java 类 −
public class Employee { private int id; private String first_name; private String last_name; private int salary; public Employee() {} public Employee(String fname, String lname, int salary) { this.first_name = fname; this.last_name = lname; this.salary = salary; } public int getId() { return id; } public String getFirstName() { return first_name; } public String getLastName() { return last_name; } public int getSalary() { return salary; } }
考虑上述对象将被存储和检索到以下 RDBMS 表中 −
create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) );
第一个问题,如果我们在开发了几个页面或我们的应用程序之后需要修改我们的数据库设计怎么办? 二、在关系型数据库中加载和存储对象暴露给我们以下五个不匹配问题 −
序号 | 不匹配 & 描述 |
---|---|
1 |
Granularity 有时你会有一个对象模型,它的类比数据库中对应表的数量还要多。 |
2 |
Inheritance RDBMS 没有定义任何类似于继承的东西,继承是面向对象编程语言中的一种自然范式。 |
3 |
Identity RDBMS 准确定义了一个"相同性"概念:主键。 然而,Java 定义了对象标识 (a==b) 和对象相等 (a.equals(b))。 |
4 |
Associations 面向对象的语言使用对象引用表示关联,而 RDBMS 将关联表示为外键列。 |
5 |
Navigation 在 Java 和 RDBMS 中访问对象的方式根本不同。 |
Object-Relational Mapping (ORM) 是处理所有上述阻抗失配的解决方案。
什么是 ORM?
ORM 代表 Object-Relational Mapping (ORM) 是一种编程技术,用于在关系数据库和面向对象的编程语言之间转换数据,例如 如Java、C#等。
ORM 系统与普通 JDBC 相比具有以下优点 −
序号 | 优势 |
---|---|
1 | 让我们的业务代码访问对象而不是数据库表。 |
2 | 从 OO 逻辑中隐藏 SQL 查询的详细信息。 |
3 | 基于 JDBC '底层'。 |
4 | 无需处理数据库实现。 |
5 | 基于业务概念而非数据库结构的实体。 |
6 | 事务管理和自动密钥生成。 |
7 | 应用程序的快速开发。 |
一个 ORM 解决方案由以下四个实体组成 −
序号 | 解决方案 |
---|---|
1 | 对持久类对象执行基本 CRUD 操作的 API。 |
2 | 一种语言或 API,用于指定引用类和类属性的查询。 |
3 | 用于指定映射元数据的可配置工具。 |
4 | 一种与事务对象交互以执行脏检查、延迟关联获取和其他优化功能的技术。 |
Java ORM 框架
Java 中有几个持久性框架和 ORM 选项。 持久性框架是一种 ORM 服务,用于将对象存储和检索到关系数据库中。
- Enterprise JavaBeans Entity Beans
- Java Data Objects
- Castor
- TopLink
- Spring DAO
- Hibernate
- 还有更多