Java Transaction Design Strategies读书笔记

第一种:Client Owner Transaction Manager(客户端管理事务,比如物理上分开的Web层、SWT客户端),使用这种事务策略必需注意:

  1. 如果client使用EJB,必需使用编程式(programmatic)的事务管理,如果使用spring,可以使用宣告式的事务管理;
  2. 如果服务端对象是远程对象,比如web层和业务逻辑层物理分开,那么事务必须有能力传播到远程对象,比如RMI协议(Spring支持的大部分远程访问协议都不支持事务传播)
  3. Server 端的业务对象必需使用宣告式的事务管理模式,不能使用编程式的事务管理模式,因为一个编程式的事务不能传播另外一个编程式的事务(客户端很可能使用编程式的事务管理)
  4. 维护ACID属性的服务端不允许启动、提交和回滚事务
  5. 由客户端启动的事务将传播给任何本地的POJO调用;
  6. 服务端的业务对象必需使用托管式的事务(Mandatory);
  7. 客户端所有Query类型的Method都不应该使用事务,但server端的业务对象应该配置Support类型的事务支持;
  8. DAO层的代码不应该显示使用任何和事务或事务回滚相关的逻辑;

 第二种:Domain Service Owner Transaction Design Strategy:服务端管理事务,即每一个客户端对服务端的调用都作为一个单独的事务,这种模式也是我们大多数情况采用的,也是推荐的模式;

第三种:Server Delegate Owner Transaction Design Strategy:服务端委托事务模型,这种其实是第二种的一种特例,也就是使用Command或delegate模式,把客户端的调用逻辑委派给服务端的一个Processor,并再服务端进行事务边界的管理。

在设计时,要尽量避免使用在客户端管理事务的边界,应该采用第二种或第三种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值