Java 数据库事务和连接池

数据库事务

Java 本身同样对数据库事务处理作了支持,事务针对上篇博客 JDBC 连接数据库是涉及到的 Connection 对象,获取的 Connection 对象默认是自动 commit(提交) 对数据库做的修改的,由此当事务不能完整执行就会导致数据库数据修改错误(如常见的银行转账的例子中只减去了一个账户的余额却因此时发生错误而没有增加另一个账户的余额),这种不完整的操作是不应该被 commit 的,因此可以通过以下方法实现数据库回滚(rollback)。
connection.setAutoCommit(false); 取消默认提交 (获取该对象后设置)
connection.commit() 完整执行一次操作后通过此方法手动提交
connection.rollback() 中途某一部分出现错误导致操作不能完整完成时使用此方法进行回滚。

数据库连接池

数据库连接池可以自己实现,也可以使用 Java 的开源连接池。常见的有 DBCP(不常用)和 C3P0。使用两个数据库连接池前都需要导入各自对应的 jar 包,这个百度一下就可以找到。

DBCP

添加 jar 包后,以如下方式建立连接池并从中获取连接对象:
BasicDataSource dataSource = new BasicDataSource();
通过使用以下方法设置建立连接的必要参数,如不使用连接池获取连接对象时也同样需要的这些参数:
dataSource.setDriverClass();设置 driver 类,例如如果是 mysql 就是 “com.mysql.jdbc.Driver”;
dataSource.setUrl(); 设置连接地址;
dataSource.setUsername(); 设置数据库连接用户名;
等;
开发中使用读取配置文件的方式配置这些参数。
通过配置文件配置方法:
BasicDataSourceFactory factory = new BasicDataSourceFactory();
BasicDataSource dataSource = factory.createDataSource(properties);
Connection connection = dataSource.getConnection(); 最后这句就获取到了 Connection 对象。

C3P0

ComboPooledDataSource cpds = new ComboPolledDataSource();
cpds.set... 等方法设置各种参数,类似 DBCP;
若通过配置文件配置,配置文件名一定为:c3p0-config.xml (放入 Java 工程的 src 文件夹下),该 xml 文件中参数标签的名称和及其内容的写法可以通过查看 cpds 的 set 等方法得到提示(set 后面的就是对应的参数名字,将该参数名字和它对应的值以 xml 的格式写入该 xml 文件,cpds 对象被创建时就会自动配置)。

猜你喜欢

转载自blog.csdn.net/qq_37427344/article/details/83506420