请联系我们

Spring数据源的灵活配置巧应用

来源: 框架 Spring |  作者: 熔岩 |  发布: 2008-5-08 00:00


环境:

Java SE 1.5

Spring-2.5.1

mysql-connector-java-5.1.5.zip

Mysql 5.x

为了从数据库中取得数据,我们首先需要获取一个数据库连接。 Spring通过DataSource对象来完成这个工作。 DataSource是JDBC规范的一部分, 它被视为一个通用的数据库连接工厂。通过使用DataSource, Container或Framework可以将连接池以及事务管理的细节从应用代码中分离出来。 作为一个开发人员,在开发和测试产品的过程中,你可能需要知道连接数据库的细节。 但在产品实施时,你不需要知道这些细节。通常数据库管理员会帮你设置好数据源。

在使用Spring JDBC时,你既可以通过JNDI获得数据源,也可以自行配置数据源( 使用Spring提供的DataSource实现类)。使用后者可以更方便的脱离Web容器来进行单元测试。 这里我们将使用DriverManagerDataSource,不过DataSource有多种实现, 后面我们会讲到。使用DriverManagerDataSource和你以前获取一个JDBC连接 的做法没什么两样。你首先必须指定JDBC驱动程序的全限定名,这样DriverManager 才能加载JDBC驱动类,接着你必须提供一个url(因JDBC驱动而异,为了保证设置正确请参考相关JDBC驱动的文档), 最后你必须提供一个用户连接数据库的用户名和密码。

以上两段文字摘自Spring开发文档原文,下面我写的一个小的应用,用来测试Srping JDBC支持的效果。

下面这个测试要实现一个目标:通过获取Spring的数据源来查询MySQL数据库testdb的一个表t_user数据。

一、创建项目,加载程序用到的工具包和驱动。并在源代码目录中添加Spring的配置文件ApplicationContext.xml,配置内容如下:

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/testdb

root

leizhimin

二、然后创建数据库环境:

create database if not exists testdb;

DROP TABLE IF EXISTS t_user;

CREATE TABLE t_user (

id int(11) NOT NULL auto_increment,

firstname varchar(50) default NULL,

lastname varchar(50) default NULL,

zipcode varchar(10) default NULL,

tel varchar(20) default NULL,

address varchar(200) default NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=gbk;

insert into t_user(id,firstname,lastname,zipcode,tel,address) values

(1,'haha','hehe','234444','13577788999','阿斯地方'),

(2,'lei','aaa','450000','13939012107','郑州市经三路');

三、Spring Bean容器环境获取工具类

package com.lavasoft.dbtest;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**

* Created by IntelliJ IDEA.

* File: ContextHelper.java

* User: leizhimin

* Date: 2008-2-21 14:20:46

* Spring Bean容器环境获取工具类

*/

public final class ContextHelper {

private static ClassPathXmlApplicationContext _ctx;

static {

_ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");

}

private ContextHelper() {

}

public static ClassPathXmlApplicationContext getContext() {

return _ctx;

}

}


* 部分内容来源于网络,版权属原作者所有,转载请注明来源。
打印 | 收藏此页 |  推荐给好友 | 举报