IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 最熟悉的陌生人JDBC -> 正文阅读

[大数据]最熟悉的陌生人JDBC

大家好,我是贺贺,专注于Java后端、数据结构和算法的学习。

为什么JDBC慢慢变陌生了

在Java开发过程中,与数据库打交道是难免的,但是,Java具体是怎么操作数据库的呢,随着Spring时代的来临,我们大部分的程序员可能只需要引入一个依赖,简单写几句配置文件,通过MyBatis等其他框架就可以操作数据库了。慢慢的我们好像对这个最有功的人JDBC陌生了,我记得刚开始学Java的时候,感觉JDBC真的太神奇了,竟然可以通过Java操作数据库。直到后来,有人问我还记得怎么创建Connection对象吗,我忽然一下子好像意识到,我在前进的过程中,好像丢掉了一些东西。

我眼中的王者JDBC

第一个Java项目是在大学做的,好像是大二暑假,那会自学Java,做了一个图书管理系统,当时要用数据库,我记得自己学过Oracle,但是听说写Java项目要用MySQL,所以就跟风用MySQL,不管是哪个数据库,大家都在说JDBC,后来才知道,JDBC既可以连接Oracle又可以连接MySQL,他就像一个中介一样。当我们要连接MySQL的时候,我们只需要用JDBC-MySQL的驱动就行了。我有时会想,世界上这么多数据库,Java怎么能一个个都去适配呢,后来发现,不是Java适配数据库,而是数据库来适配的Java,例如MySQL的驱动就是MySQL官网下载的,这也侧面看出Java的生态,同时也能让我们联想到,丰富自己比迎合别人更重要。

旧事重提,再会JDBC

现在让我凭空想象原生的Java怎么操作数据库,我都不敢保证我能写出来,下面这些内容呢,也是我参考了一些书籍,然后自己总结而来的,一句话形容自己,记性不好 忘性不差。
连接数据库
在开工之前,先去MySQL官网下载驱动,下载完之后,别忘了引入到项目中,当准备工作做完之后,就可以进行连接了。

操作数据库
连接完成之后,我们就可以对数据库进行增删改查了,那么问题来了,我们怎么去操作数据库呢,换句话说就是,我们用什么来操作数据库呢,平时我们都是直接写SQL语句的,现在Java里面怎么写SQL呢,这个问题当然不用我们操心了,官方给了我们一个接口,这个接口,可以执行SQL语句,堪称完美。这个接口就是Statement接口。
如果我们要进行查询操作,那查询的结果放到哪呢,不用担心,官方也给我们准备好了,是一个ResultSet接口,我们直接用它来接收就可以了。

经过这么一波操作,我们就成功的把数据库里的东西,查询出来,并放到Java对象中了,其实这是一个很复杂的操作,但是大部分都是Java官方给做了,所以我们看到的就是简单的使用,随着框架的诞生,我们程序员就更懒了,只需要专注于写SQL了,这些连接操作等都不用了,这样一来,开发效率是高了,好像也就开发效率高了,我们慢慢的都变水了,反正我是这样。补充:如果想要进行复杂的操作,其实本质上就是对你SQL的考察了,这里就不一一演示了。

升级版操作
我们应该还有印象,或者面试中偶尔会遇到,其实对数据库的操作,官方还给了一个接口,它就是PreparedStatement,这玩意呢,比Statement多了一个预处理。简单的说就是,该对象在向数据库发送SQL语句的时候,会做一个预处理,通过这个预处理,来减轻数据库的访问压力,这里的预处理是什么呢,首先我们需要知道数据库在执行SQL时,数据库的解释器会对SQL进行解释成数据库可以直接执行的命令,因为我们写的SQL语句其实可以简单的理解为是高级语言,而数据库本身是不能直接识别的,需要通过解释器解释之后才能识别。而这里Java提供的预处理就是做了这个解释的操作,这样一来就减轻了数据库的压力。为什么要减轻数据库的压力呢,把预处理放到Java层面,难道就不用时间了吗?当然要时间,但是这个时间是在编译的时候做的,也就是只要编译好了PreparedStatement对象,那么它就把SQL给解释成数据库可以直接执行的格式了,所以就减轻了数据库的压力,从而提高了效率。

另一方面,PreparedStatement可以防止SQL注入,因为Statement在执行的时候是一个字符串,而这个字符串可能会被恶意在后面的where语句里拼接一个or 1=1,这样就会导致SQL语句永真,而产生错误。如果通过预处理的方式,它的执行不是一整个字符串,而是进行set的操作,就避免了恶意拼接字符串。

到目前为止呢,我们基本了解了,如何通过Java来操作数据库,其实呢,随着科技的发展,我们拥有了更多的花里胡哨,但是最初的东西,好像慢慢的离我们而去,可是我们不要忘记了,框架可以说,我们是学不完的,在我们埋头学习框架的时候,记得温习一直默默做出贡献的基础知识。

小安的故事

小安在大一加入了学生会——外联部,然后还加入了一个社团——ACM,他其实更喜欢外联部,因为在那里无忧无虑的,但是他却每天泡在ACM,可能这就是现实吧,小安在无聊的时候喜欢一个人去操作玩,他喜欢去听操场上别的社团在唱歌,他也喜欢街舞社团,可是他都没有加入。有一次,小安走到了街舞社团的门口,站了好久,最终还是没有进去。他不开心的时候就在宿舍里,带着耳机,自己唱歌,还好他的室友都能很好,能受得了他,要不然早把这个不合群的臭小子赶出去了。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:05:51  更:2022-01-08 14:05:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:51:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码