ORM是什么?ORM介绍 - hibernate

JDBC是什么?

JDBC代表Java数据库连接,并提供一组Java API,用于Java程序访问关系数据库。这些Java的API允许Java程序执行SQL语句,并与任何SQL兼容的数据库进行交互。

JDBC提供了一个灵活的架构来编写一个独立于数据库应用程序,它可以在不同的平台上运行,并与不同的数据库管理系统交互,而无需任何修改。

JDBC的优点和缺点

JDBC的优点 JDBC的缺点
干净和简单的SQL处理 良好的性能与大数据 用于小型应用很不错 简单,语法很容易学习 复杂,如果它被用在大型工程项目 大的编程开销 无封装 难以实现MVC的概念 查询是具体的数据库管理系统

为什么用对象关系映射(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)
);

第一个问题,如果我们需要开发有几页或我们的应用程序后,修改数据库的设计?其次,加载并存储对象在关系数据库使我们面临以下五大不匹配的问题。

不匹配 描述
Granularity 有时候,将有哪些具有比在数据库中对应的表的数目更多的类的对象模型。
Inheritance RDBMS中没有定义任何类似继承是面向对象编程语言的自然范式。
Identity 关系数据库定义的'千篇一律'只有一个概念:主键。但是,Java定义了对象标识(a== b)和对象相等(那么a.Equals(b))
Associations 面向对象的语言表示使用的对象引用,其中的上午RDBMS代表一个协会作为一个外键列关联。
Navigation 访问Java和关系数据库对象的方法是根本不同。

对象 - 关系映射(ORM)是解决处理所有上述阻抗失配。

什么是ORM?

ORM代表对象 - 关系映射(ORM)是一种编程技术的ORM系统已通过纯JDBC的优点如下关系数据库和面向对象的编程语言,如Java,C#等之间转换数据

S.N. 优点
1 让业务代码访问对象,而不是数据库表。
2 隐藏了面向对象的逻辑SQL查询详情。
3 基于JDBC的“引擎盖下”
4 无需处理数据库实现。
5 基于业务概念,而不是数据库结构的实体。
6 事务管理和自动密钥生成。
7 应用程序的快速开发。

ORM解决方案由以下四种实体:

S.N. 解决
1 一个API来对持久化类的对象执行基本的CRUD操作。
2 语言或API来指定引用的类和类的属性查询。
3 一个可配置的设备,用于指定映射元数据。
4 技术与事务对象交互,以执行脏数据检查,懒关联加载,以及其他优化功能。

Java ORM框架:

有几种持久性框架和Java的ORM方案。持久性框架是一个ORM的服务,存储和检索对象到关系型数据库。

  • 企业JavaBeans实体Bean

  • Java Data Objects

  • Castor

  • TopLink

  • Spring DAO

  • Hibernate

  • And many more