CSDN JAVA随笔 No.12

 

事务ACID

原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。

一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。

隔离性(isolcation):一个事务处理对另一个事务处理没有影响。

持续性(durability):事务处理的效果能够被永久保存下来 。

常用API

connection.setAutoCommit(false);

关闭自动提交, 打开事务。

connection.commit();

提交事务。

connection.rollback();

回滚事务。

Savepoint sp = conn.setSavepoint();

设置保存点

conn.rollback(sp);

回滚到保存点

conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

设置隔离级别, 可以通过Connection中的常量设置

隔离级别

在多线程并发访问数据库并且使用事务的时候, 可能会遇到脏读, 不可重复读, 幻读的情况, 需要设置隔离级别来避免

脏读: 读到的线程未提交的数据

不可重复读: 在一个事务中读取同一个记录两次, 获取数据不同

幻读: 在一个事务中, 读取到的记录数不同

 
 

隔离级别

 
 
 

脏读

 
 
 

不可重复读

 
 
 

幻读

 
 
 

读未提交 Read Uncommitted

 
 
 

 
 
 

   √

 
 
 

 
 
 

读已提交 Read Committed

 
 
 

 

 
 
 

   √

 
 
 

   √

 
 
 

可重复读 Repeatable Read

 
 
 

 

 
 
 

 

 
 
 

   √

 
 
 

可序列化 Serializable

 
 
 

  

 
 
 

  

 
 
 

  

 

select@@tx_isolation;

查看隔离级别

set transactionisolation level read uncommitted;

设置读未提交

set transactionisolation level read committed;

设置读已提交

set transactionisolation level repeatable read;

设置可重复读

set transactionisolation level serializable;

设置可序列化

start transaction;

开始事务

rollback;

回滚事务

commit;

提交事务

获取插入的ID

conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

ResultSet rs = ps.getGeneratedKeys();

if(rs.next())

   user.setId(rs.getInt(1));

MySQL的select last_insert_id()可以获取之前插入的记录的id,但这只是MySQL才有的函数分页

通过ResultSet的滚动可以设置获取记录的位置,但这样是从数据库中查询出所有数据, 然后再从结果中筛选结果,性能非常低.

MySQL提供了分页语法. 在查询语句后可使用LIMIT关键字完成分页功能.

反射基础

构造函数

Class.getConstructors()

获取所有构造函数

Class.getConstructor(Class...);

获取到class中带有指定类型参数的构造函数

Constructor.newInstance(Object...);

使用构造函数创建对象, 传入指定参数

方法

Class.getMethods()

获取所有公有方法, 包括继承的

Class.getDeclaredMethods()

获取所有类中定义的方法, 包括私有的

Class.getMethod(String, Class...)

获取指定方法名和参数类型的方法(公有的)

Class.getDeclaredMethod(String, Class...)

获取指定方法名和参数类型的方法(类中定义的)

Method.invoke(Object, Object...)

在制定对象上运行方法, 将制定参数传入.

 

                                            2011/9/14

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值