JDBC代表Java数据库连接,并提供一组Java API,用于Java程序访问关系数据库。这些Java的API允许Java程序执行SQL语句,并与任何SQL兼容的数据库进行交互。
JDBC提供了一个灵活的架构来编写一个独立于数据库应用程序,它可以在不同的平台上运行,并与不同的数据库管理系统交互,而无需任何修改。
JDBC的优点 | JDBC的缺点 |
---|---|
|
|
当我们与一个面向对象的系统工作,还有的对象模型和关系数据库之间的不匹配。 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系统已通过纯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方案。持久性框架是一个ORM的服务,存储和检索对象到关系型数据库。
企业JavaBeans实体Bean
Java Data Objects
Castor
TopLink
Spring DAO
Hibernate
And many more