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

粒度

有时您将拥有一个对象模型,该模型的类数多于数据库中相应表的数量。

2

继承

RDBMS 没有定义任何类似于继承的东西,而继承是面向对象编程语言中的自然范例。

3

标识

RDBMS 定义了“相同”的一个概念:主键。但是,Java 定义了对象标识 (a==b) 和对象相等性 (a.equals(b))。

4

关联

面向对象的语言使用对象引用来表示关联,而 RDBMS 使用外键列来表示关联。

5

导航

在 Java 和 RDBMS 中访问对象的方式从根本上不同。

**对象关系映射** (ORM) 是解决所有上述阻抗不匹配的方案。

什么是 ORM?

ORM 代表 **对象关系映射** (ORM),是一种将数据在关系数据库和面向对象编程语言(如 Java、C# 等)之间转换的编程技术。

与普通的 JDBC 相比,ORM 系统具有以下优势:

序号 优势
1 让业务代码访问对象而不是数据库表。
2 隐藏 SQL 查询的细节,使其与面向对象逻辑分离。
3 基于底层的 JDBC。
4 无需处理数据库实现。
5 基于业务概念而不是数据库结构的实体。
6 事务管理和自动键生成。
7 快速开发应用程序。

ORM 解决方案包含以下四个实体:

序号 解决方案
1 一个 API,用于对持久化类的对象执行基本的 CRUD 操作。
2 一种语言或 API,用于指定引用类和类属性的查询。
3 一个可配置的设施,用于指定映射元数据。
4 一种与事务对象交互的技术,以执行脏检查、延迟关联提取和其他优化功能。

Java ORM 框架

Java 中有几个持久化框架和 ORM 选项。持久化框架是一种 ORM 服务,用于将对象存储和检索到关系数据库中。

  • 企业级 JavaBeans 实体 Bean
  • Java 数据对象
  • Castor
  • TopLink
  • Spring DAO
  • Hibernate
  • 还有很多其他框架
广告