写点什么

基于 Java 事务模型的事务策略

  • 2009-04-13
  • 本文字数:851 字

    阅读完需:约 3 分钟

事务对于确保数据的完整性与一致性是至关重要的。要想完全理解事务,必须得熟悉一些基本概念、模型还有策略。Mark Richards 说到“混淆事务模型与事务策略是个常见错误”。这篇文章谈到了“ Java™平台所支持的三种事务模型并对基于这些模型的四种主要事务策略展开了讨论。通过使用 Spring Framework 及 Enterprise JavaBeans(EJB)3.0 的一些示例,Mark 介绍了事务模型的工作方式及他们缘何能作为从基本的事务处理到高速事务处理系统的基石” 。

Java 平台支持三种事务模型:

  • 本地事务模型——事务由 DB 资源而不是应用容器或框架管理。开发者管理连接而不是事务。
  • 编程式事务模型——开发者从事务管理器中获取事务,之后需要自己编写事务启动、提交、异常及回滚代码。
  • 声明式事务模型——最常见的模型,又叫做容器管理事务。在这种模型下,容器管理着事务,开发者定义(声明)事务的行为和参数。

但这种支持仅能描述事务基本信息和期望行为以及使用的语法和规则。事务策略能够解决如下问题:何时需要使用 REQUIRED 或 MANDATORY 属性、特定的指令、使用哪种模型及如何对特定的情况进行优化。

Mark 在之前的一篇文章中讨论了事务模型的优势与陷阱

这篇文章介绍了使用特定模型的策略及如何以恰当的方式使用模型。下面列出了这四个策略:

  • 在客户端发出了多个基于服务器或基于模型的调用来完成一个单独的工作单元时需要使用客户端编排(Client Orchestration)事务策略。
  • 在对后端调用的主要入口方法是粗粒度(如果你愿意可以称其为服务)的情况下需要使用 API 层事务策略。
  • 高并发事务策略是上面策略的一个变种,在应用无法支持长事务的情况下需要使用该策略(通常基于性能和可伸缩性考虑)。
  • 高速处理事务策略也许是最极端的一种事务策略了。如果应用需要最快的处理时间(以及吞吐量),同时还要在处理过程中保持一定的事务原子性,那么可以使用该策略 _。_

Mark Richards 是 InfoQ 迷你书 Java Transaction Design Patterns 的作者,本书对该主题进行了更细致的讲解。

查看英文原文: Transaction Strategies Based on Java Transaction Models

2009-04-13 05:383122
用户头像

发布了 88 篇内容, 共 260.2 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

生成式AI在电信行业的有所为与有所不为

百度开发者中心

人工智能 文心一言

生成式AI发展前景展望:创新、应用与市场规模

百度开发者中心

人工智能 百度文心一言

SpringBoot有几种获取Request对象的方法?

大发导师带赚计划

java面试

生成式AI助力人工智能下半场

百度开发者中心

人工智能 百度文心一言

【第1讲】Python3.11的下载、安装和卸载,有手就能学会

程序员晚枫

Python 安装 入门

生成式AI:人工智能新生产力

百度开发者中心

人工智能 百度文心一言

学习Java 8 Stream,提升编码能力!

互联网工科生

Java stream Java11 Stream API

ARTS 打卡第 5 天

自由

ARTS 打卡计划

【墨菲安全实验室】Smartbi未授权设置Token回调地址获取管理员权限

墨菲安全

网络安全 安全 BI

面部表情识别技术的伦理问题与应对策略

来自四九城儿

面部表情识别研究:解读情绪的密码

来自四九城儿

【墨菲安全实验室】 Apache Airflow Drill Provider < 2.4.3 存在任意文件读取漏洞(CVE-2023-39553)

墨菲安全

Apache 网络安全 安全 漏洞 apache 社区

React和Vue的区别,大家怎么看?

FinFish

Vue React 小程序容器 混合app

更方便的集成使用!IoTDB plugin 上线 Grafana 官网!

Apache IoTDB

质效提升 | QA不做业务需求测试,你怎么看?

laofo

DevOps cicd 研发效能 持续交付 质量赋能

C++11时间日期库chrono的使用

芯动大师

CPU 缓存行

红袖添香

Java 多线程 MESI 缓存行 伪共享

基于低代码如何7天内开发一套应用管理系统?

这我可不懂

低代码 应用开发 JNPF

使用 Amazon MemoryDB for Redis 作为 JuiceFS 的元数据引擎

亚马逊云科技 (Amazon Web Services)

Amazon

2023-08-14:用go语言写算法。给出两个长度相同的字符串 str1 和 str2 请你帮忙判断字符串 str1 能不能在 零次 或 多次 转化 后变成字符串 str2 每一次转化时,你可以将

福大大架构师每日一题

福大大架构师每日一题

软件测试/测试开发丨Python 常用第三方库 yaml

测试人

Python 程序员 软件测试 测试开发

ByConity 首次 TPC-DS 测试结果发布 & 新活动邀请!

字节跳动开源

大数据 开源 字节跳动 数仓 社区

面部表情识别:心理学与计算机科学的交汇点

来自四九城儿

生成式AI:未来内容产业的变革力量

百度开发者中心

人工智能 百度文心一言

NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

汀丶人工智能

人工智能 自然语言处理 文本匹配

鱼龙混杂的网络营销行业:入行新人如何规划职业

石头IT视角

SaaS出海:黄粱易得,黄金难收

ToB行业头条

RHG之人工智能漏洞挖掘

云起无垠

NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

汀丶人工智能

人工智能 自然语言处理 文本匹配算法

Go 常量

小万哥

Go 程序员 云原生 后端 开发

软件测试/测试开发丨Python 虚拟环境及pip环境管理

测试人

Python 程序员 软件测试 测试开发

基于Java事务模型的事务策略_Java_Dave West_InfoQ精选文章