【JDBC与JPA】JDBC与JPA

一、简介:

1. JDBC:

英文全称:Java DataBase Connectivity

JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。

JDBC库中所包含的API通常与数据库使用于:

  • 连接到数据库
  • 创建SQL或MySQL语句
  • 在数据库中执行SQL或MySQL查询
  • 查看和修改数据库中的数据记录

JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成:

  • JDBC API:提供应用程序到JDBC管理器连接。
  • JDBC驱动程序API:支持JDBC管理器到驱动程序连接。

JDBC API使用驱动程序管理器并指定数据库的驱动程序来提供与异构数据库的透明连接。

JDBC驱动程序管理器确保使用正确的驱动程序来访问每个数据源。 驱动程序管理器能够支持连接到多个异构数据库的多个并发驱动程序。


JDBC API提供以下接口和类 -

  • DriverManager:此类管理数据库驱动程序列表。 使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC下识别某个子协议的第一个驱动程序将用于建立数据库连接。

  • Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它还提取与使用Driver对象相关的信息。

  • Connection:此接口具有用于联系数据库的所有方法。 连接(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。

  • Statement:使用从此接口创建的对象将SQL语句提交到数据库。 除了执行存储过程之外,一些派生接口还接受参数。

  • ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。

  • SQLException:此类处理数据库应用程序中发生的任何错误。

2. JPA:

英文全称:Java Persistence API

JPA(作为一个实体,以及如何与管理关系实体。

下表描述了每个在上述架构的显示单元。

单元 描述
EntityManagerFactory 这是一个EntityManager的工厂类。它创建并管理多个EntityManager实例。
EntityManager 这是一个接口,它管理的持久化操作的对象。它的工作原理类似工厂的查询实例。
Entity 实体是持久性对象是存储在数据库中的记录。
EntityTransaction 它与EntityManager是一对一的关系。对于每一个EntityManager,操作是由EntityTransaction类维护。
Persistence 这个类包含静态方法来获取EntityManagerFactory实例。
Query 该接口由每个JPA供应商,能够获得符合标准的关系对象。

二、区别:

JDBC访问数据库的主要工作:
1.得到JDBC驱动程序
2.使用DriverManager,Connection,Statement,ResulrSet等;
JPA当问数据库主要工作
1.得到JDBC驱动程序
2.得到持久性提供者相关类库和配置文件
3.提供实体类
4.使用Persistence、EntityManagerFactory和Entity等接口。

不同点:

1.使用的sql语言不同:
JDBC使用的是基于关系型数据库的标准SQL语言;
JPA通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
2.操作的对象不同:
JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行:
JPA操作的是持久化对象,由底层持久化对象的数据更新到数据库中。
3.数据状态不同:
JDBC操作的数据时“瞬时”的,变量的值无法与数据库中的值保持一致;
JPA操作的数据时可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。

三、优缺点:

1.JDBC速度快。
2.JPA编写程序较为简单,实现了数据库的封装,程序员可以只关注entity部分而不需要理解数据库的关系。

四、扩展框架:

1. JDBC扩展框架:

jpa可理解为JDBC的一种扩展框架,除此之外还有mybatis等框架 

2. JPA扩展框架:

jpa是一种SUN官方提出的java持久化规范,下面为其具体实现:
hibernate:
spring:
spring data:
open jpa:
eclipse link:
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AAAAABBBBBYYYYY/article/details/76422695

posted on 2022-10-04 01:29  bdy  阅读(237)  评论(0编辑  收藏  举报

导航