数据库连接池

来源:互联网 发布:cacti监控linux主机 编辑:程序博客网 时间:2024/06/08 12:46

基本思想:

与数据库建立连接是很费时并且很耗资源的事,为了加快数据库的相应,在内存中专门为数据库建立一个“缓冲池”,在缓冲池中提前放置一定数量的连接,当需要与数据库建立连接时,只需要在缓冲池中取出一个,使用完毕之后再放进去即可。

获得连接的过程是由连接池完成的,所以在java程序中不需要加载驱动也不需要创建连接。

第三方实现连接池需要实现javax.sql.PooledConnection接口(得到连接)和javax.sql.ConnectionPoolDataSource(数据源,获得connection)接口 。

dbcp连接池:

apache 上的一个 java 连接池项目

访问数据库的过程:

1 导入需要的jar包。
2 配置连接池。在properties配置文件中配置和数据库,连接池有关的重要参数。

driverClassName=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@localhost:1521/orclusername=studentpassword=okinitialSize=5   连接池初始化时有5个连接,第六个连接需要时(1)新建一个连接(2)等待其他连接空闲。maxActive=10   最大活动连接数。连接池中最多有10个连接maxWait=6000    需要等待连接时,最大的等待时间。

3 获取数据库连接对象(先建立连接池)

//读取配置文件InputStream in = new FileInputStream("jdbc.properties");Properties p = new Properties();p.load(in);//创建数据源DataSource ds = BasicDataSourceFactory.createDataSource(p);Connection conn = ds.getConnection();

4 获取运载sql语句的Statement对象。

PreparedStatement ps = conn.prepareStatement("select * from student");

5 执行sql语句,得到结果集。

ResultSet rs = ps.executeQuery();

6 释放连接。

具体应用

因为,建立连接池的过程只需要执行一次,所以将它放在静态代码块中。

static {        try {        InputStream in = new FileInputStream("jdbc.properties");            Properties p = new Properties();            p.load(in);            ds = BasicDataSourceFactory.createDataSource(p);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }

获取连接:

public static Connection get_Connection() {        Connection conn = null;        try {            conn = ds.getConnection();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return conn;    }

执行sql语句:

public static void main(String[] args) {        try {            Connection conn = DbUtil.get_Connection();            PreparedStatement ps = conn.prepareStatement("select * from student");            ResultSet rs = ps.executeQuery();            while(rs.next()){                int id = rs.getInt("STU_ID");                System.out.println(id);            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }

Druid连接池:

阿里巴巴推出的数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好。
需要的jar包:druid-1.0.10.jar。
开发步骤和dbcp基本一样,都是将和数据库相关的信息配置到DataSource对象中。
Druid的配置属性见:

http://blog.csdn.net/liu414226580/article/details/36177493

创建Druid的数据源:

DataSource ds = DruidDataSourceFactory.createDataSource(p);

sql2o

jdbc的封装框架,自动将sql语句执行后的结果转为一个java对象的集合。

开发步骤:

1.导入jar包。

2.通过sql2o得到连接

Sql2o s=new Sql2o("jdbc:oracle:thin:@localhost:1521/orcl", "student", "ok");Connection conn = s.open();//得到一个连接。

3.执行sql语句。

Query query2 = conn.createQuery("select * from student where stu_id=:sid");        query2.addParameter("sid", 1);        query2.executeAndFetch(Student.class);

Sql2o中参数的传递:“:变量名”,用addParameter()函数传递参数。

查询结果转化为java对象:用executeAndFetch()函数将查询出来的记录转化为java对象的集合,在参数中指定映射的实体类型。
注意:列名和java对象的属性名要对应起来,可以在select语句中给列名其别名。

0 0
原创粉丝点击