• 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-DBCP:简单连接池创建数据源

        以这种方式创建数据源必须先准备两个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.setMinIdle(5);
    //指定等待时间:等待数据库连接池中给分配的连接,等待时间,超过之后会报异常
        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驱动包,不同的数据库需要不同的驱动,一般在各个数据库官方网都可以获取。

  • 相关阅读:
    java 安全沙箱模型详解
    ProcessLifecycleOwner判断Android应用程序前后台切换
    React 使用 antd 实现按需加载
    数据湖!这是个什么东东!!!
    Linux sed awk 总结之001
    Linux超实用网络篇汇总001
    非常实用Curl命令整理
    Mysql 查找锁定事务并kill
    sqlserver 查看sql语句是否被重用
    Linux下配置mysql允许指定IP远程访问
  • 原文地址:https://www.cnblogs.com/ihanliu/p/5009939.html
Copyright © 2020-2023  润新知