您的位置:首页 > 编程语言 > Java开发

java web开发(十)事务和连接池

2017-06-03 00:00 218 查看
摘要: java web

一 JDBC处理事务

一项事务时由一条或多条操作数据库的SQL语句组成的一个不可分割的工作单元(这点不同于批处理)。只有当事务中所有操作都正常完成,整个事务才能被提交到数据库中,如果有一项操作没有完成,则整个事务会被撤销。

Connection关键方法:

setAutoCommit(boolean autoCommit):设置是否自动提交事务

commit():提交事务。

rollback():撤销事务。

Connection conn = DriverManager.getConnection(String url, String user, String password);
conn.setAutoCommit(false);//关闭自动提交事务
try{
String sql1 = "INSERT INTO users(name, password) VALUES(?, ?)";
PreparedStatement statement1 = conn.prepareStatement(sql1);
statement1.setString(1, "cary");
statement1.setString(2, "123456");
statement1.executeUpdate();
PreparedStatement statement2 = conn.prepareStatement(sql1);
statement2.setString(1, "wang");
statement2.setString(2, "123456");
statement2.executeUpdate();
conn.commit();
} catch (Exception e){
conn.rollback();
}


二 数据库连接池

JDBC每次创建和断开Connection对象都会消耗一定时间和IO资源,因为java程序与数据库建立连接时,数据库端要验证用户名和密码,为连接分配资源,并把代表Connection对象加载到内存中。如果有大量的并发访问时,频繁的创建,断开数据库连接会影响数据库的访问效率,甚至导致数据库崩溃。

数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新创建;数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,当应用程序访问数据库时并不会直接创建Connection,而是向连接池“申请”一个Connection,如果连接池中有空闲的Connection,则将其返回,否则创建新的Connection。

1.DataSource接口

它负责与数据库建立连接,返回Connection对象;实现DataSource接口的类称为数据源,它有连个常用实现:DBCP数据源和C3P0数据源。

2.DBCP数据源

1.jar包:commons-dbcp.jar和common-pool.jar;核心类:BasicDataSourceFactory和BasicDataSource。

2.配置dbcpconfig.properties(核心连接数,最大连接数,最大空闲连接数)

3.BasicDataSourceFactory.createDataSource(Properties prop)创建DataSource数据源对象。

4.通过DataSource获取连接Connection对象。

注:dbcpconfig.properties需要放到src根目录下。

3.C3P0数据源

1.jar包:c3p0-x.x.x.x.ja;核心类:ComboPooledDataSource。

2.配置c3p0-config.xml(连接数,jsbcUrl,user,password,driverClass等)。

3.创建ComboPooledDataSource对象。

4.通过ComboPooledDataSource获取Connection对象。

注:c3p0-config.xml需要放在src根目录下。

三 DBUtils工具

为了简化JDBC使用,Apache组织提供了一个工具类库commons-dbutils,它对JDBC进行简单封装,简化了JDBC的编码工作量。

下载:commons-dbutils
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息