事务:
原子性
一致性
隔离性
JDBC中对事务的支持
JDBC默认是每执行一条sql语句都会提交事务。这对于批量处理数据来说性能开销过大。而且不满足事务本该管理的原则-上述三点。
1:阻止事务自动提交
conn.setAutoCommit(false); //不自动提交
2:conn.commit(); //提交事务
3:conn.rollback(); //回滚
批处理sql
Statement的一个方法addBatch(String sql)方法。
该方法可以将给定的sql存入Statement的命令列表中缓存。
当执行executeBatch()方法时,Statement会将命令列表中缓存的所有sql语句一次性提交给数据库。这可以有效的减少网络通信带来的性能消耗。
clearBatch()用于清空命令列表中缓存的所有sql语句。
PreparedStatement也支持批处理。原理相同addBatch()不带参数,向命令列表添加一条sql语句
封装事务
java提供了一个类ThreadLocal
该类的作用是,在同一线程中的不同模块间共享数据。数据共享是根据线程区分的。不同线程间不共享数据。
多线程共享数据:
单例模式。