数据访问模式:面向对象应用中的数据库交互

数据访问模式:面向对象应用中的数据库交互
作 者: Clifton Nock 鄢爱兰 王安鹏 鄢爱兰 王安鹏
出版社: 中国电力出版社
丛编项: 开发大师系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  CliftonNock是位于美国科罗拉多州丹佛市的PeopleSoft公司的高级软件架构师。他在IBM工作了5年,他的工作内容是设计编程接口,以简化对iSeries操作系统及其集成数据库的访问,他在这项工作中拥有9项美国专利。他在Minnesota大学讲授过几门编程课程,并经常出席世界级的技术会议。他拥有Minnesota大学的计算机科学硕士学位。

内容简介

有效且优质的数据访问代码,对于现实中任何企业应用程序的性能和适用性来说,都是至为关键的。要改进现有系统,没有哪种方式比优化数据访问代码更好了。不管什么样的数据库引擎、平台、语言或者应用程序,开发人员总是不断遇到同样的关系数据库访问难题。在本书中,CliftonNock辨别了25种已验证的解决方案,以简洁易用的形式展示了每一种解决方案。这些模式广泛地解决了各种问题,包括创建有效的数据库无关的应用程序,对用户隐藏含糊的数据库语义,加速数据库资源初始化,简化开发和维护,改进对并发和事务的支持,以及消除数据访问瓶颈。每一模式都通过带有完整注释的Java/JDBC代码实例加以说明,并使用UML图表示界面、类和关系。译者序设计面向对象的软件难,设计可复用的面向对象软件更难。:摘自《设计模式:可复用面向对象软件的基础》数据库是企业级应用系统的基石,即使最简单的桌面应用程序也经常要使用关系数据库支持数据持久性。数据访问代码的性能对整个系统往往有很大的影响。数据访问逻辑的复杂性以及标准的多样性,使这些代码经常成为设计中最困难的部分。即使不考虑代码复用和支持多种数据库平台,冗余和有缺陷的代码也很难避免。对此我有深刻的体会:精心设计的应用逻辑和数据访问细节纠缠成一团乱麻,调试和维护如同一场噩梦;不良的并发设计造成死锁,缓慢的数据库资源初始化也令用户喋喋不休;针对已有的数据库设计了系统,到头来用户却坚持要使用另一种产品。当我读到这本书的时候,不觉豁然开朗,原来数据访问代码应该是这样设计的!在设计模式大行其道的今天,这是一本适逢其会的好书。原书的作者依据多年从事数据库开发的经验,抽象出了25种常用的关系数据库访问模式,进行了详细准确的阐述。全书由导言和五部分模式组成。导言对应用程序和中间件、软件抽象、设计模式有简短而精彩的论述,并对数据访问模式的应用提供了建议。后面的每个部分都包括一组模式的详细说明和对这组模式的概述。对每个模式都体现了一种经过千锤百炼的设计的精髓,可以在许多数据访问标准和商业化产品中发现它们的遗迹。即使不将其付诸实践,您也可以从中领略到一些杰出设计思想的精妙之处。从架构师到编码人员,包括学习数据库技术的学生,都可以从本书受益。对照传统的数据库教科书,您会发现本书的独到之处。本书由鄢爱兰、王安鹏主译。参与本书翻译工作的还有谢君英、王延华、马孝荣、欧阳叙好,盛海燕和谢小花录入了本书的代码并进行了初排,在此一并感谢。由...

图书目录

第一部分 解耦模式 1

1. 数据模型和数据访问 2

2. 域对象与关系数据 2

3. 解耦模式 4

第1章 数据访问器 5

1.1 简述 5

1.2 背景 5

1.3 适用性 8

1.4 结构 9

1.5 交互 9

1.6 效果 10

1.7 策略 11

1.8 示例代码 12

1.9 相关模式和技术 23

第2章 主动域对象 24

2.1 简述 24

2.2 背景 24

2.3 适用性 26

2.4 结构 26

2.5 交互 27

2.6 效果 28

2.7 策略 29

2.8 示例代码 30

2.9 相关模式和技术 38

第3章 对象/关系映射 39

3.1 简述 39

3.2 背景 39

3.3 适用性 42

3.4 结构 42

3.5 交互 43

3.6 效果 43

3.7 策略 44

3.8 示例代码 46

3.9 相关模式和技术 53

第4章 层 55

4.1 简述 55

4.2 背景 55

4.3 适用性 58

4.4 结构 58

4.5 交互 59

4.6 效果 60

4.7 策略 61

4.8 示例代码 61

4.9 相关模式和技术 68

第二部分 资源模式 69

1. 资源和上下文 69

2. 资源和并发 70

3. 数据访问资源 70

4. 资源管理 71

5. 资源模式 72

第5章 资源修饰器 75

5.1 简述 75

5.2 背景 75

5.3 适用性 77

5.4 结构 77

5.5 交互 77

5.6 效果 79

5.7 策略 79

5.8 示例代码 81

5.9 相关模式和技术 85

第6章 资源池 86

6.1 简述 86

6.2 背景 86

6.3 适用性 87

6.4 结构 87

6.5 交互 88

6.6 效果 89

6.7 策略 90

6.8 示例代码 92

6.9 相关模式和技术 100

第7章 资源定时器 101

7.1 简述 101

7.2 背景 101

7.3 适用性 102

7.4 结构 103

7.5 交互 103

7.6 效果 105

7.7 策略 106

7.8 示例代码 107

7.9 相关模式和技术 116

第8章 资源描述器 117

8.1 简述 117

8.2 背景 117

8.3 适用性 119

8.4 结构 119

8.5 交互 120

8.6 效果 120

8.7 策略 120

8.8 示例代码 121

8.9 相关模式和技术 124

第9章 重试器 125

9.1 简述 125

9.2 背景 125

9.3 适用性 126

9.4 结构 126

9.5 交互 126

9.6 效果 128

9.7 策略 128

9.8 示例代码 129

9.9 相关模式和技术 134

第三部分 输入输出模式 135

1. 输入和输出操作 136

2. 标识对象 136

3. 输入输出模式 137

第10章 选择工厂 139

10.1 简述 139

10.2 背景 139

10.3 适用性 140

10.4 结构 140

10.5 交互 141

10.6 效果 141

10.7 策略 142

10.8 示例代码 142

10.9 相关模式和技术 147

第11章 域对象工厂 148

11.1 简述 148

11.2 背景 148

11.3 适用性 148

11.4 结构 149

11.5 交互 150

11.6 效果 151

11.7 策略 151

11.8 示例代码 152

11.9 相关模式和技术 156

第12章 更新工厂 157

12.1 简述 157

12.2 背景 157

12.3 适用性 158

12.4 结构 158

12.5 交互 159

12.6 效果 160

12.7 策略 160

12.8 示例代码 160

12.9 相关模式和技术 164

第13章 域对象装配器 166

13.1 描述 166

13.2 背景 166

13.3 适用性 168

13.4 结构 168

13.5 交互 169

13.6 效果 170

13.7 策略 171

13.8 示例代码 172

13.9 相关模式和技术 186

第14章 分页迭代器 187

14.1 简述 187

14.2 背景 187

14.3 适用性 188

14.4 结构 188

14.5 交互 189

14.6 效果 190

14.7 策略 191

14.8 示例代码 192

14.9 相关模式和技术 195

第四部分 缓存模式 197

1. 缓存的操作和透明性 197

2. 缓存的数据 198

3. 缓存的模式 198

第15章 缓存访问器 199

15.1 简述 199

15.2 背景 199

15.3 适用性 200

15.4 结构 200

15.5 交互 201

15.6 效果 201

15.7 策略 202

15.8 示例代码 203

15.9 相关模式和技术 205

第16章 即时缓存 207

16.1 简述 207

16.2 背景 207

16.3 适用性 207

16.4 结构 208

16.5 交互 208

16.6 效果 209

16.7 策略 210

16.8 示例代码 210

16.9 相关模式和技术 214

第17章 预填缓存 215

17.1 简述 215

17.2 背景 215

17.3 适用性 216

17.4 结构 216

17.5 交互 217

17.6 效果 217

17.7 策略 219

17.8 示例代码 219

17.9 相关模式和技术 226

第18章 缓存查找序列 227

18.1 简述 227

18.2 背景 227

18.3 适用性 229

18.4 结构 229

18.5 交互 230

18.6 效果 231

18.7 策略 231

18.8 示例代码 234

18.9 相关模式和技术 241

第19章 缓存收集器 242

19.1 简述 242

19.2 背景 242

19.3 适用性 243

19.4 结构 243

19.5 交互 244

19.6 效果 246

19.7 策略 246

19.8 示例代码 247

19.9 相关模式和技术 257

第20章 缓存复制器 258

20.1 简述 258

20.2 背景 258

20.3 适用性 259

20.4 结构 261

20.5 交互 261

20.6 效果 262

20.7 策略 263

20.8 示例代码 263

20.9 相关模式和技术 269

第21章 缓存统计 270

21.1 简述 270

21.2 背景 270

21.3 适用性 271

21.4 结构 271

21.5 交互 272

21.6 效果 272

21.7 策略 272

21.8 示例代码 272

21.9 相关模式和技术 278

第五部分 并发模式 279

1. 工作单元 279

2. 工作副本 280

3. 并发问题 280

4. 并发模式 282

第22章 事务 285

22.1 简述 285

22.2 背景 285

22.3 适用性 286

22.4 结构 287

22.5 交互 288

22.6 效果 288

22.7 策略 289

22.8 示例代码 293

22.9 相关模式和技术 295

第23章 乐观锁定 297

23.1 简述 297

23.2 背景 297

23.3 适用性 298

23.4 结构 298

23.5 交互 299

23.6 效果 299

23.7 策略 300

23.8 示例代码 301

23.9 相关模式和技术 303

第24章 悲观锁定 304

24.1 简述 304

24.2 背景 304

24.3 适用性 305

24.4 结构 306

24.5 交互 306

24.6 效果 307

24.7 策略 307

24.8 示例代码 308

24.9 相关模式和技术 311

第25章 补偿事务 312

25.1 简述 312

25.2 背景 312

25.3 适用性 314

25.4 结构 314

25.5 交互 315

25.6 效果 315

25.7 策略 316

25.8 示例代码 316

25.9 相关模式和技术 322

参考文献 323

后记 325