JDBC操作事务, 数据库连接池

JDBC操作事务, 数据库连接池

JDBC操作事务

ACID原则

原子性:要么全部完成,要么都不完成

一致性:总数不变

隔离性:多个进程互不干扰

持久性:一旦提交不可逆,持久化到数据库了

隔离性的问题:

脏读:一个事务读取了另一个没有提交的事务

不可重复读:在同一个事务内,重复读取表中的数据,表数据发生了改变

虚读(幻读):在一个事务内,读取到了别人插入的数据,导致前后读出的数据不一致

package com.JDBC.www;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Statement;

public class Demo03 {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		//1. 加载驱动
		Class.forName("com.mysql.jdbc.Driver");  //固定写法,加载驱动
		
		//2.用户信息和url
		//useUnicode=true&characterEncoding=utf8&useSSL=true
		String url="jdbc:mysql://localhost:3306/persion?useUnicode=true&characterEncoding=utf8&useSSL=true";
		String username="root";
		String password="123456";
		
		//3.连接成功,数据库对象 connection 代表数据库
		Connection connection=DriverManager.getConnection(url, username,password);
		
		//4.关闭数据库的自动提交,自动会开启事务
		connection.setAutoCommit(false); //开启事务
		
		//5. 预编写sql语句
				String sql="SELECT *FROM `one_persion` WHERE NAME=?";
		
		//5. 执行SQL的对象PreparedStatemment执行sql的对象
		PreparedStatement statement=connection.prepareStatement(sql);
		
		//手动给参数赋值
		statement.setString(1, "流进是2");
		ResultSet result=statement.executeQuery();
		
		//业务完毕,提交事务
		connection.commit();
		
		//如果失败,默认回滚
		while(result.next()) {
			System.out.println(result.getInt("id"));
			System.out.println(result.getString("name"));
			System.out.println(result.getInt("age"));
			System.out.println(result.getString("dz"));
		}
		
		//6.释放连接
		result.close();
		statement.close();
		connection.close();
}
}
数据库连接池

数据库连接—执行完毕----释放

连接----释放 十分浪费系统资源

池化技术:准备一些预备的资源,过来就连接预先准备好的

最小连接数:10个

最大连接数:15 业务最高承载上限

等待超时:100ms

编写连接池,只需要实现一个接口 DataSource

开源数据源实现

DBCP

C3P0

Druid:阿里巴巴

使用了这些数据库连接池之后,我们在项目开发中就不需要编写连接数据库的代码了

DBCP

需要用到的jar包

commons-dbcp-1.4 , commons-pool-1.6

C3P0

需要用到的jar包

c3p0-0.9.5.2 , mchange-commons-java-0.2.12

总结

无论使用什么数据源,本质还是一样的, DataSource

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值