[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
moboyou 2025-03-29 15:05 10 浏览
先来看一个问题:在创建 Java 项目,选择数据库依赖时,如下图,你知道该如何正确的选择合适你项目的依赖吗?
看完这篇文章,就能有个很好的认知了。
后续的文章中,我们也需要使用数据库,所以在正式开始使用 Java 数据库框架(如持久层框架)之前,也需要先来了解一下数据库相关的基础知识。
1. JDBC(Java DataBase Connectivity)
Java 应用通过 JDBC 接口访问数据库, 为各种数据库(如 mysql、oracle)提供一个统一的接口,应用程序通过 JDBC 执行各种 SQL 操作。
- JDBC API 定义如何访问关系型数据库中的数据。
- JDBC driver 实现特定类型数据库的 JDBC API。
- Spring JDBC 是 Spring 提供的在 JDBC API 之上的一个抽象层,目的是为了简化和 DB 的交互。
2. mysql-connector-java
MySQL Connector/J 提供了使用标准 JDBC API 从 Java 应用程序连接到 MySQL 的驱动程序支持。MySQL Connector/J 是一个 JDBCType4 驱动程序,实现 JDBC4.2 规范。
Connector/J provides driver support for connecting to MySQL from Java applications using the standard Java Database Connectivity (JDBC) API.`
3. ORM(Object Relational Mapping)
ORM 的作用是在数据库表与 Java 对象之间建立映射,理论上来说有 ORM 就无需直接通过 SQL 操作数据库了,通过 Java 对象即可,这样会方便很多。
4. JPA(Java Persistence API)
JPA(Java 持久层接口),定义了 Java 对象持久化的标准方法,是 ORM 的一个标准,使用 ORM 机制弥合面向对象模型与存储在关系数据库中的数据之间的差距。
JPA 建立在 JDBC 之上,也是通过 JDBC 访问数据库。Hibernate 是实现 JPA 标准的一个有名例子。
JDBC API solves interaction with the database, while JPA solves storing/retrieving of objects to/from databases in an object-oriented way. Underneath, JPA implementations rely on JDBC drivers to access databases.
5. MyBatis
MyBatis 不是 JPA 的一个实现,可以把它理解为加强版的 SQL,实现了诸如动态 SQL、结果集映射等,高效又不失灵活。它克服了 ORM 过于笨重的缺点(比如,在多表联合查询时相当繁琐),又避免了直接使用原始的 JDBC 操作数据库过于低效。但同样的,Mybatis 也 是建立在 JDBC 之上,通过 JDBC 访问数据库的。
小结
本文主要分享了 JDBC、Connector/J、JPA、ORM,以及 MyBatis 之间的相互关系。你了解了吗?
相关推荐
- C#与Docker完美结合:容器化部署实战,让你的应用秒级上线!
-
在当今快速迭代的软件开发环境中,高效的部署流程对于产品的成功至关重要。容器化技术,尤其是Docker,已成为实现快速、可靠部署的首选方案。对于C#开发者而言,将C#应用与Docker相结合,能够显著提...
- 我找到了最适合NAS的记账应用,开源自托管,适合国人的记账方式
-
「亲爱的粉丝朋友们好啊!今天熊猫又来介绍好玩有趣的Docker项目了,喜欢的记得点个关注哦!」引言其实记账软件熊猫之前也发过几个,不过使用起来都不是很理想,要么界面设计不太好看,要么就是项目过于复杂了...
- 手搓各种软件!手把手教学!(如何搓手)
-
shocked!太炸裂了!大家看下这个星标就知道了,youdefinitelyneedtoputittoyourfavorites!这是GitHub上排名第二的开源项目,它能手把手教你...
- 看了《碟中谍8》之后,才发现特工们的黑科技我们NAS用户也能拥有
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:Stark-C#头条兴趣联欢会#哈喽小伙伴们好,我是Stark-C~最近《碟中谍8:最终清算》正在热播,作为碟中谍的老粉,我前几天带着家人...
- NAS原来这么有用:利用docker 一键部署mstream私人云音乐
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:熊猫不是猫QAQ前言你是否面临以下困扰:曾经想听以前某首音乐,但在网上已经找不到了;即使找到了,因版权原因无法在线听,甚至无法下载;有些曲子...
- 一见钟情!这就是你在寻找的Docker界面!优雅而不简单—Arcane
-
「亲爱的粉丝朋友们好啊!今天熊猫又来介绍好玩有趣的Docker项目了,喜欢的记得点个关注哦!」引言要说DockerUI项目,知名的其实就那么几个,目前感觉备用的比较多的还是老牌的portainer,...
- 大神级产品:手机装 Linux 运行 Docker 如此简单
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:灵昱Termux作为一个强大的Android终端模拟器,能够运行多种Linux环境。然而,直接在Termux上运行Docker并不可行,需要...
- 在 Docker 中运行 Mac OS 是什么样的体验
-
大家好,我是你们的章鱼猫。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现...
- Docker 容器的 5 个实践案例(每天5分钟玩转docker容器技术)
-
Docker是一个开源平台,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。大多数Docker容器的核心是在虚拟化环境中运行的轻量级Linux服务器。DockerLinu...
- 使用 Docker Model Runner 在本地构建 GenAI 应用程序
-
想要在本地运行大型语言模型(LLM)?以下是在您自己的桌面上设置DockerModelRunner并访问LLM的方法。DockerModelRunner是DockerDeskt...
- docker部署一个证件照工具HivisionIDPhotos,非常好用!
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:略懂的大龙猫今天给大家推荐一个很好玩的开源应用HivisionIDPhotos。这个工具原理是利用AI模型对照片进行一系列处理:智能抠...
- 好好看,好好学!Docker玩法深度教学,小白也能轻松上手
-
Docker对于大多数NAS玩家来说想必都非常熟悉,即便没用过,也应该接触过相关的一些内容。就我个人来说,对于评价一台NAS是否好用,Docker功能占据了不小的比重。8月份终于是又更新了一个大版本,...
- 开源&Docker:自动录制小姐姐,docker部署各平台的自动录制工具
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry前言大家好,这里是可爱的Cherry。今天给大家分享一下小姐姐们录屏工具,配置完成以后可以自动监听直播并实现自动录播。支...
- 目前发现的一些有趣的docker容器—第十一弹
-
前言本期又是整理汇总的文章,依然是针对NAS下可搭建的一些docker容器的汇总,涉及可能会有介绍过的容器和没介绍过但不太好用的容器,感兴趣的可以翻翻之前的文章哦!!!也欢迎留言你发现的一些有趣的或者...
- 数人科技王璞:Docker与Mesos的结合应用
-
2015年4月16-18日,由CSDN主办、CSDN专家顾问团支持的OpenCloud2015大会将在北京国家会议中心拉开帷幕。为期三天的大会,以推进行业应用中的云计算核心技术发展为主旨,聚焦技术...
- 一周热门
- 最近发表
-
- C#与Docker完美结合:容器化部署实战,让你的应用秒级上线!
- 我找到了最适合NAS的记账应用,开源自托管,适合国人的记账方式
- 手搓各种软件!手把手教学!(如何搓手)
- 看了《碟中谍8》之后,才发现特工们的黑科技我们NAS用户也能拥有
- NAS原来这么有用:利用docker 一键部署mstream私人云音乐
- 一见钟情!这就是你在寻找的Docker界面!优雅而不简单—Arcane
- 大神级产品:手机装 Linux 运行 Docker 如此简单
- 在 Docker 中运行 Mac OS 是什么样的体验
- Docker 容器的 5 个实践案例(每天5分钟玩转docker容器技术)
- 使用 Docker Model Runner 在本地构建 GenAI 应用程序
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- 网站管理平台php源码 (19)
- php小说爬取源码 (23)
- 云电脑app源码 (22)
- html画折线图 (24)
- docker好玩的应用 (28)