`

数据库访问杂谈

阅读更多

    一直想写一篇数据库访问的博客,之前很忙,一直没有时间。想写的数据库访问的这个博客不涉及到具体的数据库操作,比如增删改查或者一些ORM框架的使用,比如mybaitis、Hibernate,也不涉及到高阶的事务处理。就是想概况的写一下。

    那什么是数据库访问呢,很简单——访问数据库呗。对,就是这么简单,咱们用图来说话,如下图所示:


      
客户端程序,比如Java程序(因为本人是干Java的,就以java举例),发送消息给关系型数据库,关系数据库返回查询结果给客户端程序。这两者到底是怎么通信的呢,有的人可能会说用JDBC API,这样说也对,但是还是没有涉及到根本。这两者是通过socket通信的。首先客户端程序是属于应用层的,关系型数据库也是属于应用层的,而且关系型数据库一般都有固定的端口,比如mysql3306.同样客户端程序也有端口(唯一标识一个应用程序:主机IP地址+端口号)。涉及到应用层的2个进程通信,并且还是用的端口,那么就是socket通信,并且这两者之间的这种通信还要求是稳定的,可靠的,那么就要求传输层采用的协议应该是TCP的协议。在这里咱们再来回顾一下TCP/IP模型的四层结构



      
应用层与应用层的之间的通信。还是以数据库访问为例。客户端程序—>传输层—>网络互联层—>主机到网络层—>主机到网络层—>网络互联层传输层—>数据库。而socket就介于应用层和传输层之间(传输层有我们很熟悉的两大协议TCPUDP)。到这里了,有人可能要问了那JDBC API是什么,其实这就跟JDBC APIORM框架的关系差不多,如果我现在让你不用ORM框架了,让你用原生的JDBC去写数据库访问层,你说你痛苦吗。同样的,如果我们用原生的socket通信来做数据库访问也是很复杂的,原因就是各个数据库的采用的应用层协议都不一样,如果采用socket通信的方式访问数据库,那么从oracle切换到mysql访问就要颇费一番周章了,所以SUN公司就提供了一个JDBC API,那么JDBC API是什么——JDBC APISUN公司定义的java database connectivity,是SUN定义的Java数据库访问规范,说白了,就是接口,由各大数据库厂商去实现,各大厂商去实现与自己的数据库通信的细节。这里就涉及到面向接口编程,面向接口编程能让我们轻松的实现从访问oracle切换到访问mysql

 

采用这样的方式也就是JDBC API的方式访问数据库有一下2点好处

 

第一:简化数据库访问代码,无需涉及到与数据库服务器通信的细节。

第二:不依赖具体的数据库平台,只要数据库提供商实现了JDBC API就可以,这样同一个Java程序就可以访问多个不同类型的数据库。

      java程序通过JDBC API访问数据库如图所示:



数据库访问整体上来说就是这样,具体的如何用jdbc访问数据库就不说了。很多资料都有介绍

  • 大小: 14.1 KB
  • 大小: 25.4 KB
  • 大小: 21.7 KB
分享到:
评论

相关推荐

    高并发架构一些技术套路杂谈

    3. **数据库优化**:除了使用主从复制和读写分离等技术外,还可以通过对SQL查询进行优化、使用索引等方式来提高数据库的性能。 综上所述,高并发架构的设计涉及到多个层面的技术,需要根据实际情况选择合适的技术栈...

    hibernate 杂谈

    【hibernate 杂谈】 ...理解和充分利用这些特性,不仅可以优化数据库访问性能,还能提高代码的可维护性和灵活性。在实际开发中,开发者应根据业务需求灵活选择和配置这些功能,以达到最佳的系统性能和设计。

    hibernate杂谈

    Hibernate是一个强大的Java对象关系映射框架,它简化了数据库的访问和管理,允许开发者使用面向对象的编程方式来操作数据库。 文章的内容主要分为几个部分,每个部分都针对Hibernate框架的不同应用和技术点进行了...

    数据库小技巧

    pro*c学习笔记(一)(2009-09-10 16:30:44)转载标签: proc杂谈 分类: 技术浅谈 一 Pro*C 程序概述: 1.什么是Pro*C程序 在ORACLE数据库管理和系统中,有三种访问数据库的方法:

    高并发场景杂谈.zip

    在千万级用户规模下,除了数据库的分库分表策略,可能还会涉及CDN(Content Delivery Network)来加速静态资源的访问,减少网络延迟;使用一致性哈希算法进行分布式缓存,保证数据的一致性;以及使用如Nginx这样的反向...

    系统框架权限设计杂谈论文

    这篇名为“系统框架权限设计杂谈论文”的文档很可能是对这一领域的深入探讨。权限设计是任何复杂系统的核心组成部分,特别是在多用户环境中,如何合理地分配和管理权限,确保数据安全并防止未授权访问,是系统架构师...

    j2ee杂谈

    iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,或者通过注解方式定义,与Java代码解耦,提高了数据库访问的灵活性和效率。iBatis的主要特性包括: 1. **动态SQL**:iBatis支持在XML...

    Spring杂谈

    Spring对JDBC和ORM的支持简化了数据库的访问和操作。 - **对JDBC的支持**:提供了一套简化JDBC操作的模板类,如JdbcTemplate。这些模板类封装了JDBC API的冗长代码,同时保留了操作的灵活性。 - **对ORM的支持**:...

    spring杂谈 作者zhang KaiTao

    他还分享了解决数据库读写分离、错误处理、依赖注入失效等问题的经验,以及在特定环境下如IDEA内嵌Jetty运行Spring项目时可能遇到的异常处理。 总的来说,这些内容涵盖了Spring的多个重要方面,包括事务管理、AOP、...

    地产杂谈系列之四:2021年新开工持续低迷之惑.pdf

    由于我无法访问外部文件或数据库,因此无法直接查看文件【地产杂谈系列之四:2021年新开工持续低迷之惑.pdf】的具体内容。但我可以根据您提供的【标题】、【描述】、【标签】和【部分内容】的信息来生成关于房地产...

    spring 杂谈,求扩散

    集成过程通常涉及配置Servlet容器、Spring的web-context和数据访问层。 6. **AspectJ切入点语法**:Spring AOP支持AspectJ的切入点表达式,这使得精确控制通知(advice)的执行时机成为可能。切入点表达式语言允许...

    instantclient-basic-linux.x64-19.3.0.0.0dbru.zip

    1. OCI (Oracle Call Interface):这是Oracle数据库的主要编程接口,允许C和C++程序员访问数据库。通过OCI,开发者可以直接编写数据库操作代码,实现高效的数据处理。 2. ODBC (Open Database Connectivity):这是一...

    注册码查询器,让你使用无忧

    标签“系统工具”表明这是一款与操作系统密切相关的实用程序,可能需要一定的系统权限来访问和处理注册信息。它并非特定于某个操作系统,而是作为一个通用的辅助工具存在,帮助用户管理他们的软件授权。 压缩包内的...

    .NET C# MySQL各版本驱动 + 文档 + 案例源码 完整版

    2. 提供ADO.NET接口,使开发者可以使用DataTable、DataSet、DataAdapter等.NET数据访问对象与MySQL交互。 3. 支持异步操作,利用.NET的async/await语法进行非阻塞数据库操作,提高应用性能。 4. 包含最新的MySQL协议...

    SSH开发的一个在线服装商店

    在在线服装商店中,Spring作为服务层和数据访问层的容器,可以提供事务管理、AOP(面向切面编程)以及与数据库的交互。例如,通过Spring的IoC(控制反转)和DI(依赖注入)特性,我们可以方便地创建和配置业务服务,...

    金格电子签章 linux 安装版

    - 添加MySQL配置文件,设定目录访问权限。 - 运行mysql服务,设置root用户密码。 - 配置MySQL开机自动启动,并处理安装启动异常。 9. 签章服务器部署: - 此部分内容在文档中未详细展开,需根据实际需要与金格...

    Git权威指南PDF完整版

    32.4 Gerrit 的数据库访问/ 462 32.5 立即注册为 Gerrit 管理员/ 464 32.6 管理员访问 SSH 的管理接口/ 467 32.7 创建新项目/ 468 32.8 从已有的 Git 库创建项目/ 472 32.9 定义评审工作流/ 473 32.10 Gerrit 评审...

    李春葆:数据结构习题与解析(C语言版)

    数据结构是计算机科学中的核心课程,它研究如何有效地组织和存储数据,以便进行高效的访问和操作。C语言作为一种强大的系统编程语言,常被用来实现各种数据结构,因为它提供了底层内存管理和直接操作硬件的能力。 ...

    itop使用手册

    为了有效地管理和维护日益复杂的IT环境,配置管理数据库(CMDB)应运而生。CMDB作为IT运维管理系统的核心组成部分,不仅连接了监控与运维管理,还提供了重要的数据支撑环境,对于实现运维管理至关重要。 **1.2 CMDB...

Global site tag (gtag.js) - Google Analytics