随笔分类 - 5 事务
摘要:引言: Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐。 通过配合使用ObjectWeb的JOTM开源项目,在不需要Java EE应用服务器的情况下,Spring也可以提供JTA事务。Sping对JTA支持的三种方式: 1. 直接集成JOTM提供JTA事务管理(无应用服务器支持,常用于单元测试) 2. 引用应用服务器(如Tomcat)的JNDI数据源,间接实现JTA事务管理 3. 使用特定于应用服务器的事务管理器,使用JTA事务的高级功能(Weblogic,Websphere)1. JOTM直接集成1.1. 将JOTM以下类库添加到类路径中: ...
阅读全文
摘要:Web services transactions specifications由IBM、BEA和Microsoft 重量级公司开发。被分成了三个主要工作组:WS-Coordination, WS-Atomic Transaction以及WS-Business Activity。根据http://www.oschina.net/p/apache+kandula的说法,Apache中有一个项目Kandula专门用来实现web服务的事务。但是奇怪的是,这个项目已经在Apache网上找不到了。其他相关网站如下:Axis2 与 JAX-WS规范 http://www.blogjava.net/oran
阅读全文
摘要:首先要声明,不推荐在web service中实现分布式事务。原因如下: 1、webservice在通信层上是一种无连接的协议,每两次调用之间,tcp连接是断开的。而分布式事务需要保存事务上下文,这是一个难点 2、web service是一种以松耦合为指导思想的集成方式,一般主张采用无状态方法,一次请求即完成一次完整的处理,两次调用之间没有上下文关系; 而事务处理更强调多次调用间的紧耦合关系 3、异构平台不一定都支持两段事务提交模式。一般的面向DCOM的分布式应用中,分布式事务支持策略如下: 采用两段式事务提交的办法,第一次提交是预提交,预提交之后是可以回滚的。 第二次提交是永久...
阅读全文
摘要:JTA,即Java Transaction API,译为Java事务API。JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。Java事务API(JTA:Java Transaction API)和它的同胞Java事务服务(JTS:Java Transaction Service),为J2EE平台提供了分布式事务服务(distributed transaction)。一个分布式事务(distributed transaction)包括一个事务管理器(transaction manager)和一个或多个资源
阅读全文
摘要:Oracle数据库:SET TRANSACTION ISOLATION LEVEL语句来设置ORACLE事务隔离级别。JDBC:设置Connection的setTransactionIsolation()Spring中:设置在方的注解里。如:@Transactional(readOnly=true, propagation=Propagation.NOT_SUPPORTED,isolation=Isolation.DEFAULT)public void find(Integer id) { em.find(Person.class, id);}
阅读全文
摘要:Isolation 属性一共支持五种事务设置:1、DEFAULT 使用数据库设置的隔离级别 (默认) ,由 DBA 默认的设置来决定隔离级别 . 2、READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 (隔离级别最低,并发性能高)3、READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行,适合于大多数系统) 4、REPEATABLE_READ 会出现幻读(锁定所读取的所有行) 5、SERIALIZABLE 保证所有的情况不会发生(锁表)三种恼人的问题:1: Dirty reads:读脏数据。 也就是说,比如事务A的未提交(还依然缓存)的数据被事务B读走,如果事.
阅读全文
摘要:Spring支持七种传播属性(Propagration):1、PROPAGATION_REQUIRED --支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。2、PROPAGATION_SUPPORTS --支持当前事务,如果当前没有事务,就以非事务方式执行。3、PROPAGATION_MANDATORY --支持当前事务,如果当前没有事务,就抛出异常。4、PROPAGATION_REQUIRES_NEW --新建事务,如果当前存在事务,把当前事务挂起。5、PROPAGATION_NOT_SUPPORTED --以非事务方式执行操作,如果当前存在事务,就把当前事务挂起...
阅读全文
摘要:Spring配置文件中关于事务配置总是由三个部分组成 DataSource TransactionManager 代理机制无论哪种配置方式,一般变化的只是代理机制这部分。DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化。比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。具体如下图:五种不同配置方法的共同部分配置如下: <bean id="sessionFactory" ...
阅读全文
浙公网安备 33010602011771号