ORM - 概述
什么是JDBC?
JDBC代表Java Database Connectivity 。 它提供了一组Java API,用于从Java程序访问关系数据库。 这些Java API使Java程序能够执行SQL语句并与任何SQL兼容的数据库进行交互。
JDBC提供了一种灵活的体系结构来编写独立于数据库的应用程序,该应用程序可以在不同的平台上运行,并且可以在不进行任
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)
);
第一个问题,如果我们需要在开发了几页或我们的应用程序后修改数据库的设计怎么办? 其次,在关系数据库中加载和存储对象会使我们面临以下五个不匹配问题 -
Sr.No. | 不匹配和描述 |
---|---|
1 | Granularity 有时您将拥有一个对象模型,该类型的数量多于数据库中相应表的数量。 |
2 | Inheritance RDBMS没有定义类似于继承的任何东西,这是面向对象编程语言中的自然范例。 |
3 | Identity RDBMS恰好定义了“同一性”的一个概念:主键。 但是,Java定义了对象标识(a == b)和对象相等(a.equals(b))。 |
4 | Associations 面向对象语言表示使用对象引用的关联,而RDBMS表示关联作为外键列。 |
5 | Navigation 您在Java和RDBMS中访问对象的方式根本不同。 |
O bject- R elational M apping(ORM)是处理所有上述阻抗不匹配的解决方案。
什么是ORM?
ORM代表O bject- R elational M apping(ORM)是一种编程技术,用于在关系数据库和面向对象的编程语言(如Java,C#等)之间转换数据。
与普通JDBC相比,ORM系统具有以下优势 -
Sr.No. | 好处 |
---|---|
1 | 让业务代码访问对象而不是数据库表。 |
2 | 隐藏来自OO逻辑的SQL查询的详细信息。 |
3 | 基于JDBC'引擎盖'。 |
4 | 无需处理数据库实现。 |
5 | 实体基于业务概念而非数据库结构。 |
6 | 事务管理和自动密钥生成。 |
7 | 应用程序的快速发展。 |
ORM解决方案由以下四个实体组成 -
Sr.No. | 解决方案 |
---|---|
1 | 用于对持久化类的对象执行基本CRUD操作的API。 |
2 | 用于指定引用类的类和属性的查询的语言或API。 |
3 | 用于指定映射元数据的可配置工具。 |
4 | 一种与事务对象交互以执行脏检查,延迟关联提取和其他优化功能的技术。 |
Java ORM框架
Java中有几个持久性框架和ORM选项。 持久框架是一种ORM服务,用于将对象存储和检索到关系数据库中。
- Enterprise JavaBeans Entity Beans
- Java数据对象
- Castor
- TopLink
- SpringDAO
- Hibernate
- And many more