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# 等)之间转换数据的编程技术

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 实体 Bean
  • Java数据对象
  • 蓖麻
  • 顶联
  • 春季DAO
  • Hibernate
  • 还有很多