当前位置: 首页 > news >正文

【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

相关文章:

  • Apache+Tomcat配置转发
  • 【SQLite】SQLServerCompact/SQLiteToolboxVS的SQLite插件使用
  • 【mysql索引】MySQL索引原理及慢查询优化
  • 【趋势和新技术】趋势和技术
  • 【mysql中文编码】mysql中文乱码中文编码问题
  • 【RPC】为什么需要RPC,而不是简单的HTTP接口
  • 【JAVA】java中implements和extends的使用小结
  • 【postgreSQL】Postgres-XL--基于PostgreSQL的开源分布式实现
  • 【python C结构体】Python Ctypes结构体指针处理(函数参数,函数返回)
  • 【慢查询log】MySQL慢查询日志的配置与使用教程
  • 【安装gcc】centOS6、6.5、6.8、6.9……安装/升级gcc方法
  • 【Django工程目录】Django工程目录结构优化
  • 【二叉树】二叉树的遍历规则(前序遍历、后序遍历、中序遍历)|前/后/中缀表达式...
  • 【表单】表单数据的提交和处理
  • 【表单】表单数据的提交和处理_liangchaoxi的IT博客_新浪博客
  • [译] 怎样写一个基础的编译器
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • Debian下无root权限使用Python访问Oracle
  • Java,console输出实时的转向GUI textbox
  • Mysql优化
  • php ci框架整合银盛支付
  • Python学习笔记 字符串拼接
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vue 个人积累(使用工具,组件)
  • Webpack入门之遇到的那些坑,系列示例Demo
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 开源SQL-on-Hadoop系统一览
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 如何设计一个微型分布式架构?
  • 数据仓库的几种建模方法
  • 在weex里面使用chart图表
  • 06-01 点餐小程序前台界面搭建
  • 7行Python代码的人脸识别
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​用户画像从0到100的构建思路
  • #define、const、typedef的差别
  • $.proxy和$.extend
  • (zhuan) 一些RL的文献(及笔记)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三)模仿学习-Action数据的模仿
  • (算法)Travel Information Center
  • (转)http-server应用
  • (转)为C# Windows服务添加安装程序
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net程序帮助文档制作
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法