数据库连接池与JDBC的区别

数据库连接池与JDBC的区别,第1张

jdbc是提供给java访问数据库的连接方式,在任何时候都可以创建,而在实际应用中,因为创建连接和销毁连接都会有系统(创建时间、内存等)的损耗,为了减少这种损耗,在系统启动时就创建一定数量的jdbc连接,在需要使用时派发一个连接,使用完以后收回,而不再需要临时创建,那么这些jdbc连接就统称为数据库连接池

区别:

JDBC比ODBC更容易理解;

JDBC数据库启动程序在设计的时间就包含了大部份基本数据 *** 作功能,为此在编写一些常规的数据库 *** 作语句时,如查询、更新等等,其所需求的源代码比 ODBC要少的多。故从这方面来说,JDBC数据库启动程序要比ODBC简易理解。

2JDBC数据库驱动程序是面向对象

JDBC驱动程序的架构,较量简易上手,能轻而易举的开发出强悍的数据库实际运用程序。而ODBC的话,由于其内部功能复杂,源代码编写要求高。为此即使是一个的C语言的高手,仍然需求花费不少的时间去了解那个数据库启动程序;在编写源代码的时间,还离不开有关的参考书本。

3JDBC的移植性要比ODBC要好

通常情况下,安装完ODBC驱动程序之后,还需求经过确定的配置才能够应用。而不相同的配置在不相同数据库服务器之间不能够通用。也那是说,装一次需求配置一次。但是JDBC数据库驱动程序则不相同。假如采用JDBC数据库驱动程序的话,则只需要选取适当的 JDBC数据库驱动程序,就不需要额外的配置。

两者之间联系:

JDBC和ODBC都是用来连接数据库的启动程序,JDBC和ODBC由于具有数据库独立性甚至平台无关性,因而对Internet上异构数据库的访问提供了很好的支持。

;         java数据库连接(jdbc)api是一系列能够让java编程人员访问数据库的接口,各个开发商的接口并不完全相同。以下是一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。

1、在客户端软件开发中使用thin驱动程序

在开发java软件方面,oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择oci驱动程序或thin驱动程序。oci驱动程序利用java本地化接口(jni),通过oracle客户端软件与数据库进行通讯。thin驱动程序是纯java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,oracle建议在客户端软件的开发中使用oci驱动程序,这似乎是正确的。但我建议使用thin驱动程序,因为通过多次测试发现,在通常情况下,thin驱动程序的性能都超过了oci驱动程序。

2、关闭自动提交功能,提高系统性能

在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的connection类的setautocommit()方法关闭自动提交功能,如下所示:

connsetautocommit(false);

值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用connection类的commit()和rollback()方法来人工的方式对事务进行管理。

3、在动态sql或有时间限制的命令中使用statement对象

在执行sql命令时,我们有二种选择:可以使用preparedstatement对象,也可以使用statement对象。无论多少次地使用同一个sql命令,preparedstatement都只对它解析和编译一次。当使用statement对象时,每次执行一个sql命令时,都会对它进行解析和编译。这可能会使你认为,使用preparedstatement对象比使用statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的sql *** 作中,除非成批地处理sql命令,我们应当考虑使用statement对象。

此外,使用statement对象也使得编写动态sql命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的sql命令。因此,我认为,statement对象可以使动态sql命令的创建和执行变得更加简单。

4、利用helper函数对动态sql命令进行格式化

在创建使用statement对象执行的动态sql命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字o'reilly插入表中的sql命令,则必须使用二个相连的“''”号替换o'reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换 *** 作的helper方法,然后在连接字符串心服用公式表达一个sql命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个date型的值,然后让它输出基于oracle的to_date()函数的字符串表达式。

           5、利用preparedstatement对象提高数据库的总体效率

在使用preparedstatement对象执行sql命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个preparedstatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的sql命令,使用preparedstatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行preparedstatement任务需要的时间长于statement任务,我会建议在除动态sql命令之外的所有情况下使用preparedstatement对象。

6、在成批处理重复的插入或更新 *** 作中使用preparedstatement对象

如果成批地处理插入和更新 *** 作,就能够显著地减少它们所需要的时间。oracle提供的statement和 callablestatement并不真正地支持批处理,只有preparedstatement对象才真正地支持批处理。我们可以使用addbatch()和executebatch()方法选择标准的jdbc批处理,或者通过利用preparedstatement对象的setexecutebatch()方法和标准的executeupdate()方法选择速度更快的oracle专有的方法。要使用oracle专有的批处理机制,可以以如下所示的方式调用setexecutebatch():

preparedstatement pstmt3d null;

try {

((oraclepreparedstatement)

pstmt)setexecutebatch(30);

pstmtexecuteupdate();

}

调用setexecutebatch()时指定的值是一个上限,当达到该值时,就会自动地引发sql命令执行,标准的executeupdate()方法就会被作为批处理送到数据库中。我们可以通过调用preparedstatement类的sendbatch()方法随时传输批处理任务。

7、使用oracle locator方法插入、更新大对象(lob)

oracle的preparedstatement类不完全支持blob和clob等大对象的处理,尤其是thin驱动程序不支持利用preparedstatement对象的setobject()和setbinarystream()方法设置blob的值,也不支持利用setcharacterstream()方法设置clob的值。只有locator本身中的方法才能够从数据库中获取lob类型的值。可以使用preparedstatement对象插入或更新lob,但需要使用locator才能获取lob的值。由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取lob的值。

8、使用sql92语法调用存储过程

在调用存储过程时,我们可以使用sql92或oracle pl/sql,由于使用oracle pl/sql并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用sql92。

9、使用object sql将对象模式转移到数据库中

既然可以将oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中添加方法。尽管这样作在java中没有什么问题,但由于 *** 作都是在数据库之外进行的,因此其他访问数据库的应用软件无法利用对象模式。如果利用oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和 *** 作,然后使用jpublisher等工具生成自己的java bean类。如果使用这种方式,不但java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和 *** 作的应用软件也可以使用应用软件中的对象模式。

JDBC由Sun公司制定,全称Java DataBase Connectivity,是一种可以执行SQL语句并可返回结果的Java API,支持多种关系型数据库,封装在javasql

它的具体位置在\jre7\lib\rtjar

1、JDBC的工作原理

JDBC的最大特点是独立于具体的关系型数据库,它定义了一系列的Java类,完成数据库连接(Connections)、SQL语句(Statements)、结果集(ResultSet)和其他的数据库对象,从而达到Java程序和数据库交互的目的

2、JDBC的四种驱动类型

在Java程序中,JDBC可以分为以下4种驱动类型:

(1)JDBC-ODBC Bridge

用JDBC-ODBC Bridge可以访问一个ODBC数据源,但在执行Java程序的机器上必须安装ODBC驱动,并完成配置

可以看出,中间存在一个JDBC-ODBC的转换,影响了执行的效率

(2)JDBC Native Bridge

这种方式需要在执行JSP程序的机器上安装本地的针对特定数据库(MySQL/SQL/Oracle)的驱动程序,通过这个程序把对数据库的JDBC调用转化为数据库的API调用,性能比JDBC-ODBC更好,缺点是要安装驱动

(3)JDBC-Network Bridge

这种方式不需要安装驱动程序,直接用JDBC通过网络连接数据库,与平台无关,所以在WEB开发中大量使用

(4)Pure Java JDBC Driver

Java驱动程序运行在客户端,客户端可以直接访问数据库,其体系结构最为简单,因此安全性及程序的逻辑性不行

3、JDBC连接数据库(以mysql为例)

(1)加载JDBC驱动程序

通过javalangClass类中的静态方法forName实现

(2)提供JDBC连接的URL

协议:子协议:数据源标识

其中,协议:在JDBC中总是以jdbc开始

子协议:是Bridge的驱动程序或是数据库管理系统名称,如MySQL就是mysql,常用的端口号是3306

数据源标识:标记找出数据源的地址和连接接口

(3)创建数据库的连接

向javasqlDriverManager请求获取Connection对象

(4)创建Statement

其中Statement分为三类,区别如下:

A、执行静态SQL:通过Statement实例实现

B、执行动态SQL:通过PreparedStatement实例实现

C、执行数据库存储过程:通过CallableStatement实例实现

(5)执行SQL语句,完成数据库的增删改或是查询功能

其中Statement接口提供了三种执行SQL语句的方法,区别如下:

A、Result executeQuery(String sqlString):用于查询数据库的SQL,如SELECT,返回一个结果集(ResultSet)

B、int executeUpdate(String sql):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL(数据定义)语句

C、boolean execute(String sql):用于返回多个结果集、多个更新计数或者二者组合(不太懂)

(6)得到处理结果(ResultSet)

(7)关闭JDBC对象

先关闭Statement再关闭Connection连接

参考文献:

1、邓子云,《JSP网络编程从基础到实践》(第2版)

2、邱加永,孙连伟,《JSP基础与案例开发详解》

3、谭贞军,《深入理解Java Web开发技术:探索基于主流框架的最佳组合》

文章知识点与官方知识档案匹配

Java技能树使用JDBC *** 作数据库JDBC概述

84644 人正在系统学习中

打开CSDN,阅读体验更佳

jsp学习笔记之JDBC原理及其使用_地球是圆嘀的博客

java项目的导包方式与javaweb项目的导包方式不一样 java项目:1jar复制到工程这种 2右键jar:build path 3add external jars javaweb项目 1jar项目复制到WEB-INF的lib中 核心:将java中的JDBC代码,复制到JSP中的<% %>

JSP原理、使用_lpw666_的博客

JDBC 固定步骤: 事务 Junit单元测试 搭建一个环境,事务回滚 1、JSP 11、什么是JSP Java Server Pages : Java服务器端页面,也和Servlet一样,用于动态Web技术! 最大的特点: 写JSP就像在写HTML

关键技术——JSP与JDBC应用详解(电子版)

本书详细讲解了JSP和JDBC内容,适合Java开发人员使用,也是Java开发人员必须掌握的知识

java连接数据库——JSP实现JDBC

前两个是java连接数据库的典型方式,虽然除了JDBC还有odbc的方式,但odbc的效率和跨平台都不理想,所以现在的趋势就是使用JDBC来连接需要的数据库(我以MySQL为例),这节将介绍JSP中如何实现连接数据库,其实原理都一样,只是技术不同,建议在看本节知识的时候,以及对JSP技术和前端知识有一定的了解,要不然,或许不好理解。 以下是代码: <%@ page language="

继续访问

JDBC 详解_IT__learning的博客_jdbc

三、JDBC 工作原理 1、装载驱动程序 JDBC 中规定,驱动类在被加载时,需要自己“主动”把自己注册到 DriverManger 中。commysqljdbcDriver 类的源代码如下: 通过以上源码可知我们注册驱动的时候只是 new 了自己,也就是 Driver。既然

jsp学习 jdbc访问数据库_黑猫猫琉璃的博客

Connection root = DriverManagergetConnection("jdbc:mysql://localhost:3306/jsp", "root", "123456"); 3、创建sql会话对象preparedStatement(注意这个动态的preparedStatement类它的父类其实是Statement)

最新发布 jdbc的原理示意图和模拟实现

本次博客带领大家学习JDBC的原理示意图和模拟实现。

继续访问

jsp,servlet,类,jdbc项目运行原理以及最开始打开的页面需要传递数据时的处理

实现一个web项目时,显示主要靠的是html页面,这属于静态显示。而动态显示就需要用到jsp页面。 静态页面间的跳转主要是通过a标签,而动态页面跳转也是通过a标签,但是需要传递数据。当然也可以通过表单的提交。 页面呢,也分为传递数据的页面和接收数据的页面。 传递数据的页面呢,是通过a标签后面携带的参数跳转到需要接收数据的页面以保证接收数据的页面动态的数据显示,或者通过表单提交的对应servl

继续访问

JavaWeb——JSP原理剖析和执行过程_万里顾—程的博客

JavaWeb——JSP原理剖析 1什么是JSP JSP(Java Server Pages):Java服务器端页面,和Servlet一样,是一种动态网页开发技术。 JSP是一种Java servlet,基于Java Servlet API 因此,JSP拥有各种强大的企业级Java API,包括JDBC, JNDI(Java Na

jdbc连接mysql原理_JDBC 原理浅析_月塔的博客

五详解JDBC原理: <1> 结构: DriverManager (是一工厂实现类,用了工厂方法模式) | Dirver (是驱动程序对象的接口,指向具体数据库驱动程序对象=DriverManagergetDriver(String URL)) |

JSP中 *** 作数据库的三个对象:Statement、PreparedStatement、CallableStatement

1、创建 Statement 对象 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建,如下列代码段中所示: Connection con = DriverManagergetConnection(url, "sunny", ""); Statement stmt = conc

继续访问

JSP访问数据库

JSP访问数据库内容介绍

继续访问

Java中原生 *** 作JDBC连接及原理_架构潜行之路的博客_java原生j

JDBC全称又叫做Java DataBase Connectivity,也就是Java数据库连接,说白了就是用Java语言来 *** 作数据 库,提供统一API访问数据库 *** 作。 二、原理 JDBC主要是用于java连接数据库的,能连接什么数据库不固定,其实能连接很多种数据库,而且一般来

JDBC编程的三个接口

JDBC编程的Connention接口,Statement接口和ResulSet接口,JDBC编程一个简单的查询过程

继续访问

3-JSP+JDBC数据库应用开发初步(二)

一、JSP+Servlet+JDBC开发数据库应用 上一讲“JSP+JDBC数据库应用开发初步”中,我们给出了一个小例子,采用JSP页面来处理用户的登录请求。本讲中,我们将该JSP页面替换为Servlet来处理用户登录请求。 实验步骤如下: 用户登录页面仍然采用原来的loginjsp页面,只需要把form表单的action方法修改为Servlet的url即可,其它不变。 资源页面也仍然采用resourcejsp不变,注意:该页面需要读取session中保存的用户名,若存在,则说明用户登录成功,可以显示

继续访问

java、jdbc、jsp……的简单解释

java版本 1 J2ME,功能有限,用于嵌入式设备。 2 J2SE,包含原始的核心类库,用于桌面应用程序和浏览器中的applet 3 J2EE,功能非常全面,用于数据处理和处理器端应用 J2EE功能非常的全面,那就看看它的工作模式图: JDBC是什么? 它是为java开发人员提供了一个行业标准API,可以在java应用与关系数据库之间建立起独立于数据库的连接,A

继续访问

JSP基础(十二)——初步认识JDBC

与数据库交互是Web应用程序的一个重要的组成部分,JSP使用JDBC(Java DataBase Connectivity)技术来实现与数据库的连接。JDBC提供了JSP *** 作数据库的各种接口,所以JDBC数据库编程对Web开发是非常重要的。很多DBMS(数据库管理系统)都提供JDBC驱动程序,JSP可以直接利用它访问数据库,有些DBMS没有提供JDBC驱动程序,JSP可以通过Sun公司的JDBC-

继续访问

JDBC在jsp中的使用

今天在学习JDBC在jsp中的应用时遇到了一些问题,解决后记录一下,希望对其他人能有帮助。 默认读者具有一定的jsp和数据库知识,所以对这两者不做介绍,本文主要是解决按照书上的代码敲出来最后却不能得到想要的结果的问题。 第一步,导包 导入需要的包,例如javasql javaio 第二步,加载数据库驱动 大家为了更好的记忆 *** 作步骤,不要每次建立数据库连接时都要找资料,我们应该了解每一步都是为了达到什么目的,例如现在的加载数据库驱动,可能有人会问?什么是数据库驱动呢? 数据库驱动是不

继续访问

JDBC,数据库与jsp的连接

JDBC技术的出现 为何会出现JDBC?对于我们的数据来说,都是具有时效性的,而有些数据是需要长久的保存下去,但是单单jsp并不能做到长久保存,因此我们需要将其保存在专门储存在数据库中,而jsp再次使用此数据的时候需要调用,因此就需要有一个中间的桥梁将数据库与jsp连接起来。但是最开始只有OBDC,OBDC是C语言开发的,主要再Windows环境中使用,如果用其他语言开发应用程序还需要其他中介的API和OBDC做沟通链接,这是很复杂的事。因此JDBC应运而生,这是专门针对Java和数据库连接技术,使得开发人

继续访问

JSP+JDBC连接数据库

首先 在创建项目时,要连接数据库,要将jar包导入项目(这只是方式之一,还有其他的方式实现同样的效果) 将jar包放在WEB-INF/lib目录下,然后右键,点击Build Path→Add to Build Path将其添加到项目的Libraries中,然后在JSP页面中头部添加如下代码 <%@page import="javasql"%> 即图中所示: 接下来就可以打代码了。 数据库的连接 //1获取Driver实现类的对象 ClassforName("commysql

继续访问

JSP和JDBC的使用

查询数据 <%@ page import="javasql" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <!DOCTYPE html> <html lang="en">

继续访问

认识JSP连接数据库原理

昨天有人来问JSP用jdbc连接数据库的两种方式,我懵了,才发现自己真的烂到家了,连这个都不知道,只会按网上说的方法写代码,根本就不懂原理,我需要知道原理。从网上查到一些说法,我综合整理了一下得出一些结论: 有人说JSP网站连接数据库有4种类型: [1]JDBC-OD

继续访问

关于Java Web的Servlet+JDBC(封装)+JSP的登录(送给入门的你)

关于Java Web的Servlet+JDBC(封装)+JSP的登录(送给入门的你)

JDBC与JSP初识

主要内容: -JDBC 三层架构进行组织后台代码 -JSP初识 - 在页面展示表中数据 - 在页面输入数据并处理数据课堂参考代码: 1、后台代码: (1)cnsdutdao BaseDaojavapackage cnsdutdao; import javasqlConnection; import javasqlDriverManage

继续访问

初学JSP与JDBC(mysql数据库)

之前一直不知道jsp怎么和数据库连接,后来看了大神的博客以及看书大概知道了一些。 1下好jdbc的包。见链接。 把下载好的包放在tomcat的lib文件夹下面,然后建立一个web工程导入这个包。 ->build path->configure build path-> 然后就导入成功了。 我用的是mysql数据库。(数据库方面我就不多做解释,不懂的可以去查一查。) 2JDB

继续访问

关于jsp+jdbc的简单实例

在页面显示所查数据库的内容,以表格形式显示 <%@page import="javautilArrayList"%> <%@page import="javautilList"%> <%@page import="javasqlResultSet"%> <%@page import="javasqlSQLException&q

继续访问

JSP——JDBC相关

参考博客:>

以上就是关于数据库连接池与JDBC的区别全部的内容,包括:数据库连接池与JDBC的区别、jdbc与odbc有什么区别、通过JDBC连接oracle数据库的几个技巧等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9490724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存