事务9923759811.doc

上传人:公**** 文档编号:559659381 上传时间:2023-03-05 格式:DOC 页数:3 大小:63.01KB
返回 下载 相关 举报
事务9923759811.doc_第1页
第1页 / 共3页
事务9923759811.doc_第2页
第2页 / 共3页
事务9923759811.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《事务9923759811.doc》由会员分享,可在线阅读,更多相关《事务9923759811.doc(3页珍藏版)》请在金锄头文库上搜索。

1、一、事务的隔离级别隔离级别第一类丢失更新脏读Dirty Read幻读Phantom Read不可重复读NonRepeatable Read第二类丢失更新读未提交Read uncommitted否是是是是读已提交Read committed否否是是是可重复读Repeatable read否否是否否序列化Serializable否否否否否1、 ISOLATION_DEFAULT:数据库默认隔离级别,不同数据库默认隔离级别有所不同;2、 ISOLATION_READ_UNCOMMITED:允许读取到其它事务未提交的数据,这可能会造成脏读;3、 ISOLATION_READ_COMMITED:只允许读

2、取其它事务已提交的数据,避免了脏读。query2会跟query1读取的数据不一样;4、 ISOLATION_REPEATABLE_READ:可重复读取,即query1跟query2读取的数据是一样的;5、 ISOLATION_SERIALIZABLE:最严格的隔离级别,操作同一数据的并发事务只能串行化执行。二、事务传播行为事务传播行为类型说明PROPAGATION_REQUIRED必须在事务内执行,如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。PROPAGATION_SUPPORTS支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAG

3、ATION_MANDATORY必须在当前事务内执行,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW总是新建一个事务,如果当前存在事务,把当前事务挂起,直到新事物执行完毕。PROPAGATION_NOT_SUPPORTED不能在事务环境下运行,如果当前存在事务,就把当前事务挂起。PROPAGATION_NEVER以非事务方式执行,如果当前存在事务,就直接抛出异常。PROPAGATION_NESTED必须在事务内执行,如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。三、Java5注解简化事务配置Tr

4、ansactionalpublic interface BusinessService Transactional(readOnly=true) Account queryUserDetails(String username); Transactional(propagation=Propagation.SUPPORTS, readOnly=true) Category queryRoot(); void deleteFavorite(Account account, Book book);只要在接口类上标记“Transactional”,所有方法就自动继承这个设置,也就是这个类的所有方法都

5、在事务中运行。当然,具体某一个方法也可以覆盖其默认设置。1、 “queryUserDetails”方法就是继承的默认设置;2、 “Account”则覆盖了默认设置,变为“Transactional(readOnly=true)”改为了只读事务,当此事务内有数据修改时抛异常;3、 “queryRoot”也覆盖了默认设置,变为“Transactional(propagation=Propagation.SUPPORTS, readOnly=true)”也改为了只读事务,并且改变了事务传播行为,变成了“PROPAGATION_SUPPORTS” 支持当前事务,如果当前没有事务,就以非事务方式执行。J

6、ava5注解事务配置还可以有下表配置:属性类型默认值描述propagation传播性枚举型:PropagationPROPAGATION_REQUIRED事务传播性属性isolation隔离性枚举型:IsolationISOLATION_DEFAULT事务隔离级别readOnly只读性布尔型false是否只读timeoutint-1超时(秒)rollbackFor回滚异常类Class需要回滚的异常类rollbackForClassname回滚异常类名String需要回滚的异常类名noRollbackFor不回滚异常类Class不需要回滚的异常类noRollbackForClassname不回滚异常类名String不需要回滚的异常类名例如:Transactional (propagation= propagation.REQUIRES_NEW,isolation= isolation.READ_COMMITED,timeout=5,rollbackFor=IOException.class, ServletException.class,noRollbackForClassname=“java.lang.ArithmeticException”)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号