zoukankan      html  css  js  c++  java
  • JAVA开发中数据源创建方法

        数据源是数据库连接池里面的概念,连接池就是指当服务器启动时,先建立几个连接,在应用需要与数据库连接时,就从连接池里获取,使用完以后,不是将连接断掉,而是放回到池里面,这样就减少了数据连接创建的次数,大大提高了连接性能。而数据源就是给服务器一个配置信息,然服务器就知道怎么使用JDBC驱动,比如url参数,数据库实例名、用户名与密码等等。Java中的数据源就是javax.sql.DataSource。DataSource的创建可以有不同的实现,下面以mysql为例介绍几种常见DataSource的创建方法:

    一、JNDI方式创建DataSource

        以JNDI方式创建数据源首先要配置数据源的相关连接信息,也就是数据源连接池。该配置应该在Tomcat安装目录下的conf/context.xml文件中配置,在Eclipse的J2EE架构下,也可以把context.xml文件创建在/META-INF目录下。其配置如下:

    <Context><!--MySql-->
    <Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource"
                 maxActive="100" maxIdle="30" maxWait="10000"
                 username="[用户名]" password="[密码]" driverClassName="com.mysql.jdbc.Driver"
                 url="jdbc:mysql://localhost:3306/[实例名]?autoReconnect=true"/>
    </Context>
    正确的配置后,就可以在程序中以JNDI的方式创建数据源,得到数据库连接并进行相应的操作。代码如下:

    try {
    			Context context = new InitialContext();
    			if (context == null){
    				throw new Exception("create context failed!");
    			}			
    			DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/[实例名]");
    			if (ds == null) {
    				Thread.sleep(2000);
    				ds = (DataSource) context.lookup("java:comp/env/jdbc/[实例名]");
    				if (ds == null) {
    					throw new Exception("get datasource failed!");
    				}
    			}
    		} catch (NamingException ne) {
    			throw ne;
    		} catch (Exception e) {
    			throw e;
    		}

    二、Apache提供的简单连接池创建数据源

        以这种方式创建数据源必须先准备两个jar文件:commons-dbcp.jar 和 commons-pool.jar,将这两个jar包放到WEB-INF/lib目录下。以这种方式创建的数据源就不再是javax.sql.DataSource了,而是org.apache.commons.dbcp.BasicDataSource。而且不再需要配置任何文件就可以直接使用。代码如下:

    // 创建BasicDataSource对象
        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/[实例名]");
        ds.setUsername("[用户名]");
        ds.setPassword("[密码]");
        ds.setInitialSize(50);
        ds.setMaxActive(100);
        ds.setMaxIdle(30);
        ds.setMaxWait(10000);
     // 关闭数据源连接
        ds.close();

    三、C3P0方式创建数据源
        使用C3P0方式创建数据源应该首先准备一个jar文件:c3p0-0.9.1.2.jar,将其放到WEB-INF/lib目录下,就可以在项目中使用C3P0创建数据源,C3P0创建的数据源对象也不是DataSource对象,而是ComboPooledDataSource,代码如下:

        // 创建ComboPooledDataSource对象
        ComboPooledDataSource ds = new ComboPooledDataSource();
        ds.setDriverClass("com.mysql.jdbc.Driver");
        ds.setJdbcUrl("jdbc:mysql://localhost:3306/[实例名]");
        ds.setUser("[用户名]");
        ds.setPassword("[密码]");
        ds.setInitialPoolSize(50);
        ds.setMaxPoolSize(100);
        ds.setMaxIdleTime(10000);

    四、Proxool方式创建数据源
        采用该方式创建数据源需要准备的jar包:proxool-01.9.0RC3.jar,将其放到WEB-INF/lib目录下,之后就可以项目中创建ProxoolDataSource对象,其代码如下:

        // 创建ProxoolDataSource对象
        ProxoolDataSource ds = new ProxoolDataSource();
        ds.setDriver("com.mysql.jdbc.Driver");
        ds.setDriverUrl("jdbc:mysql://localhost:3306/[实例名]");
        ds.setUser("[用户名]");
        ds.setPassword("[密码]");
    

    五、BoneCP方式创建数据源

        BoneCP是一个快速高效,开源免费的Java数据库接池。创作者称,BoneCP在性能上会完全超越所有主流的Java连接池。它可以帮你管理数据连接,让你的应用程序能更快速地访问数据库。比C3P0/DBCP(DataBaseconnection pool,数据库连接池)连接池快25倍。这个数据库连接池采用Google Collection作为内部的集合类框架,而且现在的版本已经很稳定。要使用BoneCP,必须用到的jar文件有:
    · bonecp-0.6.5.jar
    · google-collections-1.0.jar
    · slf4j-api-1.5.11.jar
    · slf4j-log4j12-1.5.11.jar
    · log4j-1.2.15.jar
    将这些jar包放到WEB-INF/lib目录下,就可以在程序中创建BoneCPDataSource对象,代码如下:

    // 创建BoneCPDataSource对象
        BoneCPDataSource ds = new BoneCPDataSource();
        ds.setDriverClass("com.mysql.jdbc.Driver");
        ds.setJdbcUrl("jdbc:mysql://localhost:3306/[实例名]");
        ds.setUsername("[用户名]");
        ds.setPassword("[密码]");
        ds.setAcquireIncrement(1);
        ds.setAcquireRetryDelay(10000);
        ds.setIdleConnectionTestPeriod(100);
        ds.setMinConnectionsPerPartition(2);
        ds.setMaxConnectionsPerPartition(20);
        ds.setPartitionCount(2);
    

    在创建完数据源之后,就可以利用jdbc在程序与数据库之间建立连接,但要注意的是,要有相关的jdbc驱动包,不同的数据库需要不同的驱动,一般在各个数据库官方网都可以获取。

  • 相关阅读:
    一行代码更改博客园皮肤
    fatal: refusing to merge unrelated histories
    使用 netcat 传输大文件
    linux 命令后台运行
    .net core 使用 Nlog 配置文件
    .net core 使用 Nlog 集成 exceptionless 配置文件
    Mysql不同字符串格式的连表查询
    Mongodb between 时间范围
    VS Code 使用 Debugger for Chrome 调试vue
    css权重说明
  • 原文地址:https://www.cnblogs.com/dlts26/p/2169621.html
Copyright © 2011-2022 走看看