数据源--.dbcp.BasicDataSource 使用

合集下载

cmbbox中方datasource的用法

cmbbox中方datasource的用法

cmbbox中方datasource的用法在使用C#开发Windows桌面应用程序时,我们经常需要在ComboBox控件中显示数据列表。

ComboBox控件可以通过两种方式来显示数据列表,一种是手动添加,另一种是使用DataSource属性绑定数据源。

在使用DataSource属性绑定数据源时,我们需要先创建一个数据源对象。

数据源可以是数组、集合、DataTable、DataSet等。

以DataTable为例,我们可以使用以下代码创建一个DataTable对象:DataTable dt = new DataTable();dt.Columns.Add('ID', typeof(int));dt.Columns.Add('Name', typeof(string));dt.Rows.Add(1, '张三');dt.Rows.Add(2, '李四');dt.Rows.Add(3, '王五');然后,我们可以将这个DataTable对象设置为ComboBox的DataSource属性:comboBox1.DataSource = dt;接着,我们需要指定ComboBox控件显示哪个字段。

比如,我们可以让ComboBox显示DataTable中的Name字段:comboBox1.DisplayMember = 'Name';最后,我们还需要指定ComboBox控件选中项的值是哪个字段。

比如,我们可以让ComboBox选中项的值为DataTable中的ID字段:comboBox1.ValueMember = 'ID';这样,ComboBox控件就可以显示DataTable中的数据了。

当用户选择某个选项时,ComboBox控件会返回该选项的ID值。

除了DataTable,我们还可以使用其他类型的数据源对象。

basicdatasourcefactory 参数

basicdatasourcefactory 参数

basicdatasourcefactory 参数BasicDataSourceFactory 是一个用于创建BasicDataSource 类实例的工厂类。

它提供了以下参数:- driverClassName:JDBC 驱动程序的完全限定类名。

- url:JDBC URL。

- username:数据库登录用户名。

- password:数据库登录密码。

- defaultAutoCommit:默认情况下是否自动提交事务。

- defaultReadOnly:默认情况下连接是否为只读。

- defaultTransactionIsolation:默认情况下事务的隔离级别。

- maxTotal:连接池最大连接数。

- maxIdle:连接池最大空闲连接数。

- minIdle:连接池最小空闲连接数。

- initialSize:初始化连接池时创建的连接数。

- maxWaitMillis:获取连接的最大等待时间(单位为毫秒)。

- validationQuery:用于测试连接是否可用的SQL 查询语句。

- testOnBorrow:在从池中获取连接时是否测试连接。

- testWhileIdle:在空闲时是否测试连接。

- timeBetweenEvictionRunsMillis:池中连接空闲时间的最小值(单位为毫秒)。

在此时间间隔内,连接池会检查并驱逐已空闲时间超过此值的连接。

- numTestsPerEvictionRun:每次检查中检查的连接数。

- minEvictableIdleTimeMillis:连接在池中最小空闲时间(单位为毫秒)。

连接池会在此时间间隔后驱逐此连接。

- testOnReturn:连接返回池时是否测试连接。

- jdbcInterceptors:要应用于所有池中连接的拦截器。

详解struts1的配置文件

详解struts1的配置文件

1.<Data-sources>:用来配置数据源,连接数据库。

<data-source>:具体是数据库连接。

Type:type="org.apache.dbcp.BasicDataSource" Struts中连接数据库的类。

<set-property>:此标签中配置具体的链接内容。

如:<set-property property="driverClassName" value="com.mysql.jdbc.Driver" /> 数据库驱动<set-property property="url" value="jdbc:mysql://localhost:3306/exam" />数据库地址。

<set-property property="username" value="root" />数据库登录名。

<set-property property="password" value="root" />数据库密码。

<set-property property="autoCommit" value="true" />自动提交。

<set-property property="maxActive" value="10" />最大连接数。

<set-property property="maxWait" value="5000" />最大等待数。

<set-property property="defaultAutoCommit" value="false" />默认自动提交。

BasicDataSource配置

BasicDataSource配置

BasicDataSource配置BasicDataSource配置jdbcjavasqlwebapachecommons DBCP 配置参数简要说明前段时间因为项目原因,要在修改数据库连接池到DBCP上,折腾了半天,有一点收获,不敢藏私,特在这里与朋友们共享。

在配置时,主要难以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait这四个参数,设置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection,激活回收机制好像是getNumActive()=getMaxActive()-2。

:) 有点忘了。

logAbandoned=true的话,将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。

在这里私人建议maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。

以下是我的配置的properties文件:#连接设置jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVER ername=userjdbc.password=pass#dataSource.initialSize=10#dataSource.maxIdle=20#dataSource.minIdle=5#最大连接数量dataSource.maxActive=50#是否在自动回收超时连接的时候打印连接的超时错误dataSource.logAbandoned=true#是否自动回收超时连接dataSource.removeAbandoned=true#超时时间(以秒数为单位)dataSource.removeAbandonedTimeout=180#dataSource.maxWait=1000以下是我在连接控制中调用的方法:Properties dbProps=null;//下面的读取配置文件可以根据实际的不同修改dbProps =ConfigProperties.getInstance().getProperties("jdbc.propert ies");try {String driveClassName =dbProps.getProperty("jdbc.driverClassName");String url = dbProps.getProperty("jdbc.url");String username = dbProps.getProperty("ername"); String password =dbProps.getProperty("jdbc.password");String initialSize = dbProps.getProperty("dataSource.initialSize");String minIdle =dbProps.getProperty("dataSource.minIdle");String maxIdle =dbProps.getProperty("dataSource.maxIdle");String maxWait =dbProps.getProperty("dataSource.maxWait");String maxActive =dbProps.getProperty("dataSource.maxActive");//是否在自动回收超时连接的时候打印连接的超时错误boolean logAbandoned =(Boolean.valueOf(dbProps.getProperty("dataSource.logAb andoned","false"))).booleanValue();//是否自动回收超时连接boolean removeAbandoned =(Boolean.valueOf(dbProps.getProperty("dataSource.remo veAbandoned","false"))).booleanValue();//超时时间(以秒数为单位)int removeAbandonedTimeout =Integer.parseInt(dbProps.getProperty("dataSource.remove AbandonedTimeout","300"));dataSource = new BasicDataSource();dataSource.setDriverClassName(driveClassName); dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);//初始化连接数if(initialSize!=null)dataSource.setInitialSize(Integer.parseInt(initialSize));//最小空闲连接if(minIdle!=null)dataSource.setMinIdle(Integer.parseInt(minIdle));//最大空闲连接if(maxIdle!=null)dataSource.setMaxIdle(Integer.parseInt(maxIdle));//超时回收时间(以毫秒为单位)if(maxWait!=null)dataSource.setMaxWait(Long.parseLong(maxWait));//最大连接数if(maxActive!=null){if(!maxActive.trim().equals("0"))dataSource.setMaxActive(Integer.parseInt(maxActive)); }System.out.println("logAbandoned="+logAbandoned); dataSource.setLogAbandoned(logAbandoned); dataSource.setRemoveAbandoned(removeAbandoned); dataSource.setRemoveAbandonedTimeout(removeAband onedTimeout);Connection conn =dataSource.getConnection();if(conn==null){log("创建连接池时,无法取得连接!检查设置!!!");}else{conn.close();}System.out.println("连接池创建成功!!!");}catch (Exception e) {e.printStackTrace();System.out.println("创建连接池失败!请检查设置!!!");}有使用问题或建议可与我联系:yy-man@2006-04-20 By: 小土用apache的dbcp 来建立独立的数据库连接池(db connection pool)数据库连接池的好处是不言而喻的,现在大部分的application server都提供自己的数据库连接池方案,此时,只要按照application server的文档说明,正确配置,即可在应用中享受到数据库连接池的好处。

datasource 实现原理

datasource 实现原理

datasource 实现原理DataSource是一种数据源接口,它用于获取和管理数据源的连接。

在软件开发中,数据源是指存储数据的地方,可以是数据库、文件系统、网络等。

数据源连接是指与数据源建立的连接,用于执行数据库操作,如查询、更新等。

DataSource的实现原理是将数据源的连接信息封装到一个对象中,通过该对象来获取连接,并在使用完毕后释放连接。

这种设计模式被称为连接池。

连接池是一种重用连接的机制,它通过提前创建好一定数量的连接,并将这些连接保存在一个池中。

当需要连接时,从连接池中取出一个连接,使用完毕后再放回连接池中,以便其他线程复用。

这样可以减少连接的创建和销毁的开销,提高数据库操作的效率。

DataSource的实现通常包括以下几个步骤:1. 创建连接池:首先需要创建一个连接池对象,用于保存连接对象。

2. 初始化连接池:在创建连接池对象后,需要初始化连接池,即创建一定数量的连接对象,并将其保存在连接池中。

3. 获取连接:当需要连接时,从连接池中获取一个连接对象。

连接池会检查连接对象是否可用(未被使用),如果可用则返回该连接对象,否则等待直到有可用的连接对象。

4. 使用连接:获取到连接对象后,可以使用该连接对象执行数据库操作,如查询、更新等。

5. 释放连接:使用完毕后,需要将连接对象放回连接池中,以便其他线程复用。

6. 销毁连接池:当不再需要连接池时,需要销毁连接池,释放所有连接对象。

DataSource的实现原理可以通过以下伪代码表示:```javapublic class DataSource {private ConnectionPool pool;public DataSource() {pool = new ConnectionPool();pool.init();}public Connection getConnection() {return pool.getConnection();}// Other methods...public void close() {pool.destroy();}}public class ConnectionPool {private Queue<Connection> connections;public void init() {// Create and initialize a certain number of connections// Add these connections to the connection queue}public Connection getConnection() {Connection connection = null;// Check if there is an available connection in the queue// If yes, get the connection from the queue// If no, wait until there is an available connectionreturn connection;}// Other methods...public void destroy() {// Close and release all connections in the queue}}```通过使用DataSource接口,可以方便地获取和管理数据源的连接,提高数据库操作的效率和性能。

java 操作数据库的方法

java 操作数据库的方法

java 操作数据库的方法Java 是一种面向对象的编程语言,广泛应用于开发各类应用程序。

在很多应用程序中,需要与数据库进行交互来存储和检索数据。

本文将介绍一些使用 Java 操作数据库的方法。

1. JDBC(Java Database Connectivity)JDBC 是 Java 提供的一套用于操作数据库的 API,它为开发者提供了一种标准的访问数据库的方式。

使用JDBC,开发者可以连接到不同的数据库,执行 SQL 语句,以及处理查询结果。

2. 连接数据库在使用JDBC 操作数据库之前,需要先建立与数据库的连接。

首先,需要加载数据库驱动程序,例如MySQL 的驱动程序可以通过以下代码加载:```javaClass.forName("com.mysql.jdbc.Driver");```然后,通过指定数据库的 URL、用户名和密码来建立数据库连接:```javaString url = "jdbc:mysql://localhost:3306/mydatabase";String username = "root";String password = "password";Connection connection = DriverManager.getConnection(url,username, password);```在建立数据库连接后,就可以执行各种数据库操作了。

3. 执行 SQL 语句使用 JDBC 执行 SQL 语句可以通过以下步骤:a. 创建 Statement 对象:```javaStatement statement = connection.createStatement(); ```b. 执行 SQL 语句:```javaString sql = "SELECT * FROM users";ResultSet resultSet = statement.executeQuery(sql); ```c. 处理查询结果:```javawhile (resultSet.next()) {String username = resultSet.getString("username"); int age = resultSet.getInt("age");// 处理查询结果}```4. 预编译 SQL 语句为了提高执行SQL 语句的效率,可以使用预编译的SQL 语句。

dbcp2 连接池用法

dbcp2 连接池用法

dbcp2 连接池用法English Answer:Database Connection Pooling with DBCP2。

Database connection pooling is a technique used to improve the performance and scalability of Java applications that frequently access a database. By maintaining a pool of database connections, DBCP2 allows applications to reuse existing connections, reducing the overhead of establishing new connections for each database operation.DBC2 Connection Pool Configuration.To configure a DBCP2 connection pool, you need to create a `BasicDataSource` object and set its properties. Here is an example:java.BasicDataSource dataSource = new BasicDataSource(); dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");dataSource.setUsername("root");dataSource.setPassword("mypassword");dataSource.setMaxActive(10);dataSource.setMaxIdle(5);In this example, we have configured a connection pool with a maximum of 10 active connections and a minimum of 5 idle connections.Obtaining a Database Connection.To obtain a database connection from the pool, you can use the `getConnection()` method of the `BasicDataSource`object:java.try (Connection connection = dataSource.getConnection()) {。

basicdatasource解析

basicdatasource解析

basicdatasource解析BasicDataSource是Apache Commons DBCP(Database Connection Pooling)项目中的一个开源连接池实现类,它提供了一种方便的方式来管理和获取数据库连接。

本文将对BasicDataSource进行详细解析,包括其使用方法、重要参数和配置选项等。

一、BasicDataSource概述BasicDataSource是一种基于接口DataSource的连接池实现,它能够与任何兼容的JDBC驱动程序一起使用。

连接池的主要目的是提高数据库连接的创建和关闭效率,减少频繁创建和销毁连接的开销。

二、BasicDataSource的使用方法使用BasicDataSource可以遵循以下几个步骤:1. 引入BasicDataSource依赖首先,需要在项目的依赖管理文件中引入Apache Commons DBCP 依赖,例如Maven项目的pom.xml文件中添加以下依赖项:<dependency><groupId>mons</groupId><artifactId>commons-dbcp2</artifactId><version>2.7.0</version></dependency>2. 创建BasicDataSource对象在代码中,需要创建一个BasicDataSource对象来管理数据库连接。

可以通过BasicDataSourceFactory类的createDataSource方法创建一个配置好的BasicDataSource实例。

3. 配置BasicDataSource参数在创建BasicDataSource对象之前,可以通过设置相应的属性来配置连接池的行为。

常用的配置参数包括数据库连接URL、用户名、密码、初始连接数、最大连接数等。

Spring中配置DataSource的六种方式

Spring中配置DataSource的六种方式

Spring中配置DataSource的六种⽅式第⼀种:beans.xmlXml代码1. <bean id="dataSource" class="mons.dbcp.BasicDataSource"2. destroy-method="close">3. <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />4. <property name="url"5. value="jdbc:sqlserver://localhost:1433;DatabaseName=spring" />6. <property name="username" value="sa" />7. <property name="password" value="********" />8. </bean>第⼆种:beans.xml<bean id="mappings"Xml代码1. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">2. <property name="locations" value="classpath:jdbc.properties"></property>3. </bean>4. <bean id="dataSource" class="mons.dbcp.BasicDataSource"5. destroy-method="close">6. <property name="driverClassName" value="${jdbc.driverClassName}" />7. <property name="url" value="${jdbc.url}" />8. <property name="username" value="${ername}" />9. <property name="password" value="${jdbc.password}" />10. </bean>在src⽂件夹⾥新建⼀个jdbc.properties⽂件,⾥⾯的内容为如下:Xml代码1. jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver2. jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring3. ername=sa4. jdbc.password=********第三种:beans.xmlXml代码1. <bean id="mappings"2. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">3. <property name="locations" value="classpath:jdbc.properties"></property>4. </bean>5. <bean id="dataSource" class="mons.dbcp.BasicDataSource"6. destroy-method="close">7. <property name="driverClassName" value="${jdbc.driverClassName}" />8. <property name="url" value="${jdbc.url}" />9. <property name="username" value="${ername}" />10. <property name="password" value="${jdbc.password}" />11. </bean>12.13. <context:property-placeholder location="classpath:jdbc.properties" />在src⽂件夹⾥新建⼀个jdbc.properties⽂件,⾥⾯的内容为如下:14. jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver15. jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring16. ername=sa17. jdbc.password=********其中第⼆种与第三种类似,只是指定配置⽂件的⽅法不⼀样。

basicdatasource解析

basicdatasource解析

文章标题:深度解析basicdatasource:从简单到复杂的数据源管理【序言】在现代软件开发中,数据源管理是一个至关重要的主题。

而在Java开发领域中,basicdatasource是一个常用的数据源管理工具。

本文将从简到繁地对basicdatasource进行深度解析,帮助读者全面理解这一主题。

【1. 前言】数据源在软件开发中是不可或缺的,它们提供了程序所需的数据库连接和数据访问能力。

而basicdatasource作为一个轻量级的数据源管理工具,其简单易用的特点备受开发者青睐。

【2. 什么是basicdatasource】basicdatasource是Apache Commons DBCP项目中的一个子项目,它是一个开源的Java数据库连接池实现,可以帮助开发者更加高效地管理数据库连接。

相比于其他数据源管理工具,basicdatasource具有配置简单、易于集成和轻量级的优势。

【3. 使用basicdatasource】在实际开发中,使用basicdatasource非常简单。

开发者只需引入相应的依赖,配置数据源相关的信息,并通过简单的API就可以轻松地获取数据库连接。

这种简单易用的特点使得basicdatasource成为了许多项目中首选的数据源管理工具。

【4. 深入解析basicdatasource的配置】虽然basicdatasource的使用非常简单,但是在实际项目中,我们往往需要对其进行一些定制化的配置。

比如连接池大小、连接超时时间、最大空闲时间等参数都可以通过配置文件进行调整。

这些配置项的合理设置对于项目的性能和稳定性有着至关重要的影响。

【5. 优缺点分析】在使用basicdatasource时,我们需要充分了解它的优缺点。

在简单易用的basicdatasource也存在一些性能瓶颈和局限性。

比如在高并发场景下,连接池的管理可能成为一个性能瓶颈,需要开发者进行合理的优化和调整。

datasource.getconnection的用法 -回复

datasource.getconnection的用法 -回复

datasource.getconnection的用法-回复datasource.getConnection的用法在软件开发中,数据源(DataSource)是一个重要的概念,它提供了对数据库的连接和访问,是数据库操作的基础。

在Java中,通过datasource.getConnection方法来获取数据源的连接,并进行数据库操作。

本文将一步一步解释datasource.getConnection的用法,包括如何配置数据源,获取连接,以及使用连接进行数据库操作。

一、什么是数据源数据源是一个抽象的概念,它表示了对数据库的连接信息和访问方式的封装。

数据源通常包括数据库的连接地址、用户名、密码以及一些配置信息,比如最大连接数、连接超时时间等。

通过数据源,应用程序可以方便地获取数据库的连接,并执行SQL语句进行数据操作。

数据源的优点在于它可以管理连接池,提高数据库连接的效率和性能。

同时,数据源可以方便地更换不同的数据库,而不需要修改代码,从而提高了系统的灵活性和可维护性。

二、配置数据源在Java中,常见的数据源有许多,比如常用的Apache Commons DBCP、C3P0、HikariCP等。

这些数据源都有自己的配置方式,下面以Apache Commons DBCP为例,介绍数据源的配置。

首先,需要引入DBCP的相关依赖,可以通过Maven或Gradle等工具进行管理。

在项目的配置文件(比如application.properties或application.yml)中,设置数据源的相关配置项,如数据库连接地址、用户名、密码等。

例如,在Spring Boot项目的application.properties中,可以添加以下配置:spring.datasource.url=jdbc:mysql:localhost:3306/mydbername=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver以上配置指定了数据库连接地址为localhost:3306/mydb,用户名为root,密码为123456,数据库驱动为com.mysql.jdbc.Driver。

Spring的datasource配置详解

Spring的datasource配置详解

Spring的datasource配置详解⼀句话,Spring对Hibernate的整合,是在applicationContext.xml中配置sessionFactory来实现的,其中sessionFactory中要装配dataSource。

下⾯就详细介绍dataSource Bean的配置。

先上代码(⽐较齐全的属性)<bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${driverClassName}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 连接初始值,连接池启动时创建的连接数量的初始值 --><property name="initialSize" value="${initialSize}" /><!-- 连接池的最⼤值,同⼀时间可以从池分配的最多连接数量,0时⽆限制 --><property name="maxActive" value="${maxActive}" /><!-- 最⼤空闲值.当经过⼀个⾼峰时间后,连接池可以慢慢将已经⽤不到的连接慢慢释放⼀部分,⼀直减少到maxIdle为⽌,0时⽆限制--><property name="maxIdle" value="${maxIdle}" /><!-- 最⼩空闲值.当空闲的连接数少于阀值时,连接池就会预申请去⼀些连接,以免洪峰来时来不及申请 --><property name="minIdle" value="${minIdle}" /><!-- 是否对已备语句进⾏池管理(布尔值),是否对PreparedStatement进⾏缓存 --><property name="poolPreparedStatements" value="true" /><!-- 是否对sql进⾏⾃动提交 --><property name="defaultAutoCommit" value="true" /></bean>1.Bean的id为dataSource,对应的java类是BasicDataSource,这个类适⽤于配置基本类型的数据库连接,如果要想进⾏多数据源,那么该Bean对应的java类就得⽤DynamicDataSource。

datasource.getconnection的用法 -回复

datasource.getconnection的用法 -回复

datasource.getconnection的用法-回复datasource.getConnection的用法datasource.getConnection是一个Java方法,用于获取数据库连接。

在Java中,与数据库进行交互通常需要使用到数据库连接,这个方法能够简化我们获取数据库连接的过程。

本文将一步一步回答如何使用datasource.getConnection方法获取数据库连接的过程,并介绍一些常见的用法和注意事项。

1. 引入相关的依赖库首先,在使用datasource.getConnection方法之前,需要确保在项目的依赖中引入了相关的数据库驱动库。

不同的数据库需要使用不同的驱动库,例如MySQL可以使用mysql-connector-java,Oracle可以使用ojdbc 等。

2. 创建数据源对象在获取数据库连接之前,我们需要使用数据源对象对数据库进行配置。

数据源对象是一个连接池,它可以预先创建一定数量的数据库连接,并将这些连接保存在内存中,提供给我们使用。

在Java中,常用的数据源对象有两个:BasicDataSource和ComboPooledDataSource。

在这里我们以BasicDataSource为例:javaimport org.apachemons.dbcp.BasicDataSource;...BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:localhost:3306/mydatabase"); dataSource.setUsername("myusername");dataSource.setPassword("mypassword");在上述代码中,我们首先导入BasicDataSource类,并创建一个BasicDataSource的实例。

spring配置datasource三种方式数据库连接池

spring配置datasource三种方式数据库连接池

spring配置datasource三种⽅式数据库连接池尊重原创(原⽂链接):/kunkun378263/article/details/85063551、使⽤org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建⽴连接是只要有连接就新建⼀个connection,根本没有连接池的作⽤。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"><value>${jdbc.driverClassName}</value></property><property name="url"><value>${jdbc.url}</value></property><property name="username"><value>${ername}</value></property><property name="password"><value>${jdbc.password}</value></property></bean>2、使⽤mons.dbcp.BasicDataSource说明:这是⼀种推荐说明的数据源配置⽅式,它真正使⽤了连接池技术<bean id="dataSource" class="mons.dbcp.BasicDataSource"><property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property><property name="url"><value>jdbc:oracle:thin:@localhost:1521:orcl</value></property><property name="username"><value>test</value></property><property name="password"><value>test</value></property><property name="maxActive"><value>255</value></property><property name="maxIdle"><value>2</value></property><property name="maxWait"><value>120000</value></property></bean>3、使⽤org.springframework.jndi.JndiObjectFactoryBean说明:JndiObjectFactoryBean 能够通过JNDI获取DataSource<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName"><value>java:comp/env/jdbc/roseindiaDB_local</value></property></bean>总结:3种⽅式中的第⼀种没有使⽤连接池,故少在项⽬中⽤到,第三种⽅式需要在web server中配置数据源,不⽅便于部署,本⼈推荐使⽤每⼆种⽅式进⾏数据源的配置。

spring-test-dbunit的配置和使用

spring-test-dbunit的配置和使用

spring-test-dbunit的配置和使⽤1、数据源配置<bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${er}" /><property name="password" value="${jdbc.password}" /><property name="maxActive" value="100" /><property name="maxIdle" value="30" /><property name="maxWait" value="500" /><property name="defaultAutoCommit" value="true" /><property name="timeBetweenEvictionRunsMillis" value="10000" /><property name="minEvictableIdleTimeMillis" value="10000" /><property name="validationQuery" value="select 1 from dual" /><property name="testOnBorrow" value="true" /><property name="testOnReturn" value="true" /><property name="testWhileIdle" value="true" /></bean>2、⾃定义数据库链接<bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean"><property name="skipOracleRecyclebinTables" value="true" /></bean><bean id="dbUnitDatabaseConnection"class="com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean"><property name="databaseConfig" ref="dbUnitDatabaseConfig" /><property name="dataSource" ref="dataSource" /><!-- oracle必须配置schema,不配置会抛AmbiguousTableNameException,mysql不要配置schema,否则执⾏@ExpectedDatabase的逻辑时会抛错 --><property name="schema" value="TEST" /></bean>注:如果数据库是mysql,可以忽略第⼆步,不需要配置⾃定义数据库链接。

DataSource接口介绍与使用

DataSource接口介绍与使用

DataSource接口介绍一、DataSource接口是一个更好的连接数据源的方法:JDBC1.0是原来是用DriverManager类来产生一个对数据源的连接。

JDBC2.0用一种替代的方法,使用DataSource的实现,代码变的更小巧精致,也更容易控制。

一个DataSource对象代表了一个真正的数据源。

根据DataSource的实现方法,数据源既可以是从关系数据库,也电子表格,还可以是一个表格形式的文件。

当一个DataSource 对象注册到名字服务中,应用程序就可以通过名字服务获得DataSource对象,并用它来产生一个与DataSource代表的数据源之间的连接。

关于数据源的信息和如何来定位数据源,例如数据库服务器的名字,在哪台机器上,端口号等等,都包含在DataSource对象的属性里面去了。

这样,对应用程序的设计来说是更方便了,因为并不需要硬性的把驱动的名字写死到程序里面去。

通常驱动名字中都包含了驱动提供商的名字,而在DriverManager类中通常是这么做的。

如果数据源要移植到另一个数据库驱动中,代码也很容易做修改。

所需要做的修改只是更改DataSource的相关的属性。

而使用DataSource对象的代码不需要做任何改动。

由系统管理员或者有相应权限的人来配置DataSource对象。

配置DataSource,包括设定DataSource的属性,然后将它注册到JNDI名字服务中去。

在注册DataSource对象的的过程中,系统管理员需要把DataSource对象和一个逻辑名字关联起来。

名字可以是任意的,通常取成能代表数据源并且容易记住的名字。

在下面的例子中,名字起为:InventoryDB,按照惯例,逻辑名字通常都在jdbc的子上下文中。

这样,逻辑名字的全名就是:jdbc/ InventoryDB。

一旦配置好了数据源对象,应用程序设计者就可以用它来产生一个与数据源的连接。

dbcp配置

dbcp配置
false
是否自我中断,默认是false
removeAbandonedTimeout
300
几秒后会自我中断, removeAbandoned必须为true
logAbandoned
false
是否记录中断事件,默认为false
取得对象时是否进行验证,检查对象是否有效,
默认为false
testOnReturn
false
返回对象时是否进行验证,检查对象是否有效,
默认为false
testWhileIdle
false
空闲时是否进行验证,检查对象是否有效,
默认为false
timeBetweenEvictionRunsMillis
-1
失效检查线程运行时间间隔,如果小于等于ቤተ መጻሕፍቲ ባይዱ,
不会启动检查线程,默认-1
numTestsPerEvictionRun
3
每次空闲连接线程检查的连接数
minEvictableIdleTimeMillis
1000 * 60 * 30
大于0,进行连接空闲时间判断,或为0,
对空闲的连接不进行验证;默认30分钟
removeAbandoned
DBCP
BasicDataSource提供了close()方法关闭数据源,所以必须设定destroy-method=”close”属性,以便Spring容器关闭时,数据源能够正常关闭
username
登陆数据库所用的帐号
password
登陆数据库所用的密码
url
连接数据库的URL
driverClassName
maxIdle
8
最大空闲等待连接中的数量,设0为没有限制

Java使用独立数据库连接池(DBCP为例)

Java使用独立数据库连接池(DBCP为例)

Java使⽤独⽴数据库连接池(DBCP为例)⽬前,绝⼤多数的软件系统都会使⽤数据库,⽽在软件构建起来之后,访问数据库⼜成为软件系统性能的短板(I/O操作)。

⼀般来说⼀次访问数据库就需要⼀个数据库连接。

⽽每次创建数据库连接都需要访问,分配空闲资源,占⽤资源,释放资源,结束访问。

⾮常的耗费时间和空间。

于是数据连接池技术便产⽣了,其原理就是在数据请求⽅和数据库之间建⽴⼀个数据库连接管理层。

在系统启动的时候就分配⼀定数量的连接,并维护这些连接,保持最低数量的连接数。

同时为了保护数据库和系统,设置⼀个最⼤连接数,缓解数据库的访问压⼒。

这样在每次数据请求⽅需要连接时,管理器便分配⼀个连接给数据请求⽅,数据请求⽅使⽤完连接后,将连接归还给管理器,这样就尽可能的减少不必要的数据库连接消耗。

在Java的数据库服务JDBC中并没有提供⼀个实际ConnectionPool实现,但是留出了接⼝以⽀持第三⽅服务提供商,我觉得其中最重要的接⼝是DataSource。

实际上Java访问数据库的⽅式主要有四种:⼀、使⽤DriverMananger来直接编程实现,这种是最基本的⽅式。

DriverMananger实现数据库连接的关键步骤为:1>Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();2>Connection conn = null;3>conn = DriverManager.getConnection(url, "name", "password");⼆、使⽤服务器配置⽂件来实现连接池。

⼀些服务器提供了⾃⼰的数据库连接池服务,例如Tomcat服务器就提供了由commons-DBCP⽀持的数据池连接服务,只需要在context.xml 中填写相应的数值就可以了。

三、配置⽂件配置 datasourceDataSource是在JavaAPI中提供的⼀个接⼝,第三⽅服务在实现了DataSource之后,例如DBCP的BasicDataSource,为了提⾼数据库连接池的可配置性,便利⽤IOC模式(控制反转),将实际的Bean与配置数据分开,配置数据放在配置⽂件中(⼀般使⽤XML)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据源--.dbcp.BasicDataSource 使用数据源mons.dbcp.BasicDataSource 关键字: basicdatasource之前做的项目的时候。

数据库用的是sql2008,之前用AtomikosNonXADataSourceBean一直都连接不上。

换了mons.dbcp.BasicDataSource的数据库就OK拉。

commons DBCP 配置参数简要说明前段时间因为项目原因,要在修改数据库连接池到DBCP上,折腾了半天,有一点收获,不敢藏私,特在这里与朋友们共享。

在配置时,主要难以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait这四个参数,设置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection,激活回收机制好像是getNumActive()=getMaxActive()-2。

:) 有点忘了。

logAbandoned=true的话,将会在回收事件后,在log 中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。

在这里私人建议maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。

以下是我的配置的properties文件:#连接设置jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVER ername=userjdbc.password=pass#&lt;!-- 初始化连接--&gt;dataSource.initialSize=10#&lt;!-- 最大空闲连接--&gt;dataSource.maxIdle=20#&lt;!-- 最小空闲连接--&gt;dataSource.minIdle=5#最大连接数量dataSource.maxActive=50#是否在自动回收超时连接的时候打印连接的超时错误dataSource.logAbandoned=true#是否自动回收超时连接dataSource.removeAbandoned=true#超时时间(以秒数为单位)dataSource.removeAbandonedTimeout=180#&lt;!-- 超时等待时间以毫秒为单位6000毫秒/1000等于60秒--&gt;dataSource.maxWait=1000以下是我在连接控制中调用的方法:Properties dbProps=null;//下面的读取配置文件可以根据实际的不同修改dbProps =ConfigProperties.getInstance().getProperties("jdbc.propert ies");try {String driveClassName =dbProps.getProperty("jdbc.driverClassName");String url = dbProps.getProperty("jdbc.url");String username =dbProps.getProperty("ername");String password =dbProps.getProperty("jdbc.password");String initialSize =dbProps.getProperty("dataSource.initialSize");String minIdle =dbProps.getProperty("dataSource.minIdle");String maxIdle =dbProps.getProperty("dataSource.maxIdle");String maxWait =dbProps.getProperty("dataSource.maxWait");String maxActive =dbProps.getProperty("dataSource.maxActive");//是否在自动回收超时连接的时候打印连接的超时错误boolean logAbandoned =(Boolean.valueOf(dbProps.getProperty("dataSource.logAb andoned","false"))).booleanValue();//是否自动回收超时连接boolean removeAbandoned =(Boolean.valueOf(dbProps.getProperty("dataSource.remo veAbandoned","false"))).booleanValue();//超时时间(以秒数为单位)int removeAbandonedTimeout =Integer.parseInt(dbProps.getProperty("dataSource.removeAbandonedTimeout","300"));dataSource = new BasicDataSource();dataSource.setDriverClassName(driveClassName);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);//初始化连接数if(initialSize!=null)dataSource.setInitialSize(Integer.parseInt(initialSize));//最小空闲连接if(minIdle!=null)dataSource.setMinIdle(Integer.parseInt(minIdle));//最大空闲连接if(maxIdle!=null)dataSource.setMaxIdle(Integer.parseInt(maxIdle));//超时回收时间(以毫秒为单位)if(maxWait!=null)dataSource.setMaxWait(Long.parseLong(maxWait));//最大连接数if(maxActive!=null){if(!maxActive.trim().equals("0"))dataSource.setMaxActive(Integer.parseInt(maxActive));}System.out.println("logAbandoned="+logAbandoned); dataSource.setLogAbandoned(logAbandoned); dataSource.setRemoveAbandoned(removeAbandoned);dataSource.setRemoveAbandonedTimeout(removeAband onedTimeout);Connection conn = dataSource.getConnection();if(conn==null){log("创建连接池时,无法取得连接!检查设置!!!");}else{conn.close();}System.out.println("连接池创建成功!!!");}catch (Exception e) {e.printStackTrace();System.out.println("创建连接池失败!请检查设置!!!");}有使用问题或建议可与我联系:yy-man@ 2006-04-20 By: 小土用apache的dbcp来建立独立的数据库连接池(db connection pool)数据库连接池的好处是不言而喻的,现在大部分的application server都提供自己的数据库连接池方案,此时,只要按照application server的文档说明,正确配置,即可在应用中享受到数据库连接池的好处。

但是,有些时候,我们的应用是个独立的java application,并不是普通的WEB/J2EE应用,而且是单独运行的,不要什么application server的配合,这种情况下,我们就需要建立自己的数据库连接池方案了。

这里,介绍如何利用apache 的dbcp来建立为民自己的数据库连接池。

1。

首先,下载必须的jar包dbcp包,目前版本是1.2.1:/commons/dbcp/pool包,目前版本是1.3:/commons/pool/,如果下载的pool包是1.2的版本,还要下载common-collections包:/commons/collections/在建立我们自己的数据库连接池时,可以使用xml文件来传入需要的参数,这里只使用hard code的方式来简单介绍,所有需要我们自己写的代码很少,只要建立一个文件如下:import mons.dbcp.BasicDataSource; importmons.dbcp.BasicDataSourceFactory; import java.sql.SQLException;import java.sql.Connection;import java.util.Properties;public class ConnectionSource {private static BasicDataSource dataSource = null;public ConnectionSource() {}public static void init() {if (dataSource != null) {try {dataSource.close();} catch (Exception e) {//}dataSource = null;}try {Properties p = new Properties();p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");p.setProperty("url","jdbc:oracle:thin:@192.168.0.1:1521:testDB");p.setProperty("password", "scott");p.setProperty("username", "tiger");p.setProperty("maxActive", "30");p.setProperty("maxIdle", "10");p.setProperty("maxWait", "1000");p.setProperty("removeAbandoned", "false");p.setProperty("removeAbandonedTimeout", "120");p.setProperty("testOnBorrow", "true");p.setProperty("logAbandoned", "true");dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);} catch (Exception e) {//}}public static synchronized Connection getConnection() throws SQLException {if (dataSource == null) {init();}Connection conn = null;if (dataSource != null) {conn = dataSource.getConnection();}return conn;}}接下来,在我们的应用中,只要简单地使用ConnectionSource.getConnection()就可以取得连接池中的数据库连接,享受数据库连接带给我们的好处了。

相关文档
最新文档