企业应用架构模式勘误
和往常一样,尽管我(以及编辑)尽了最大努力,但还是有一些错误漏掉了。大多数错误是语法错误,我承认我很难发现这些错误。我已经突出显示了那些我认为可能会造成严重混淆的错误。对于这些错误,我深表歉意,以下是我知道的错误列表
第 19 版及以后版本中的错误
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 16 版至第 19 版中的错误
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 13 版至第 16 版中的错误
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 10 版至第 13 版中的错误
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 9 版中的错误
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 207 页: 在第一个代码示例中,class Domain Object 应改为 class DomainObject(无空格)。[在第 10 版中已更正]
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 485 页: 在最后一个代码示例中,Person martin = Registry.personFinder().find(1);
行应改为Person martin = f1.find(1);
。[在第 10 版中已更正]
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 497 页: 在第二段的最后一句话中,“you can accumulate charges against an occupant customer even you can't do much billing”应改为“you can accumulate charges against an occupant customer even if you can't do much billing”。[在第 10 版中已更正]
第 8 版中的错误
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 207 页: 在第一个代码示例中,class Domain Object 应改为 class DomainObject(无空格)。[在第 10 版中已更正]
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 351 页: 第三段的最后一行。“(providing your HTML is XHMTL…”应改为“(providing your HTML is XHTML…”。当然。[在第 9 版中已更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 436 页: 在代码中,“class EditCustomerCommand implements Command…”应改为“class EditCustomerCommand extends BusinessTransactionCommand…”。类似地,“class SaveCustomerCommand implements Command…”应改为“class SaveCustomerCommand extends BusinessTransactionCommand…”。(我的自动导入功能中存在一个小而尴尬的漏洞。)[在第 9 版中已更正]
第 485 页: 在最后一个代码示例中,Person martin = Registry.personFinder().find(1);
行应改为Person martin = f1.find(1);
。[在第 10 版中已更正]
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 497 页: 在第二段的最后一句话中,“you can accumulate charges against an occupant customer even you can't do much billing”应改为“you can accumulate charges against an occupant customer even if you can't do much billing”。[在第 10 版中已更正]
第 6 版至第 8 版中的错误
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 34 页:(仅限第 7 版)在某些副本中,由于印刷错误,此页完全空白。如果您遇到此问题,请联系 Addison Wesley 的 John Fuller。[在第 8 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 207 页: 在第一个代码示例中,class Domain Object 应改为 class DomainObject(无空格)。[在第 10 版中已更正]
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 351 页: 第三段的最后一行。“(providing your HTML is XHMTL…”应改为“(providing your HTML is XHTML…”。当然。[在第 9 版中已更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 436 页: 在代码中,“class EditCustomerCommand implements Command…”应改为“class EditCustomerCommand extends BusinessTransactionCommand…”。类似地,“class SaveCustomerCommand implements Command…”应改为“class SaveCustomerCommand extends BusinessTransactionCommand…”。(我的自动导入功能中存在一个小而尴尬的漏洞。)[在第 9 版中已更正]
第 485 页: 在最后一个代码示例中,Person martin = Registry.personFinder().find(1);
行应改为Person martin = f1.find(1);
。[在第 10 版中已更正]
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 497 页: 在第二段的最后一句话中,“you can accumulate charges against an occupant customer even you can't do much billing”应改为“you can accumulate charges against an occupant customer even if you can't do much billing”。[在第 10 版中已更正]
第 5 版中的错误
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 34 页:(仅限第 7 版)在某些副本中,由于印刷错误,此页完全空白。如果您遇到此问题,请联系 Addison Wesley 的 John Fuller。[在第 8 版中已更正]
第 34 页: 在倒数第三行中,“you only need a single class for each table”应改为“you only need a single object for each table”。[在第 6 版中已更正]
第 66 页: 在第二行中,“It may consists of a single request”应改为“It may consistsof a single request”。[在第 6 版中已更正]
第 67 页: 在第二段中,“…arrange things so that the programs enters an isolated zone…”应改为“…arrange things so that the programsenters an isolated zone…”。[在第 6 版中已更正]
第 74 页: 在第四段中,“You have to decide what risks you want take”应改为“You have to decide what risks you want to take”。[在第 6 版中已更正]
第 76 页: 在第二段的第 3 行中,“…business transaction not leave the record…”应改为“…business transaction does not leave the record…”。[在第 6 版中已更正]
第 118 页: 在 Java 实现的第三段中,“Entity beans can't be re-entrant…”应改为“Entity beans shouldn't be re-entrant…”。(虽然您可以使实体 bean 可重入,但这样做会使您面临一些危险的并发问题。)[在第 6 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 207 页: 在第一个代码示例中,class Domain Object 应改为 class DomainObject(无空格)。[在第 10 版中已更正]
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 291 页: 页面上的第一个代码示例显示了类 Mapper 上的 Update 方法。
public virtual void Update (DomainObject arg) { Save (arg); }这是错误的代码片段。它应该改为
public virtual long Insert (DomainObject obj) { obj.Id = GetNextID(); AddRow(obj); Save(obj); return obj.Id; }自动代码导入很棒,但我仍然需要导入正确的片段![在第 6 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 326 页: 在 PersonRepository 的代码示例中,List
行
public List dependentsOf(aPerson) {应改为
public List dependentsOf(Person aPerson) {(第 5 版修复了此问题,但引入了另一个错误,重复了
List
:-()[在第 6 版中已更正]
第 351 页: 第三段的最后一行。“(providing your HTML is XHMTL…”应改为“(providing your HTML is XHTML…”。当然。[在第 9 版中已更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 436 页: 在代码中,“class EditCustomerCommand implements Command…”应改为“class EditCustomerCommand extends BusinessTransactionCommand…”。类似地,“class SaveCustomerCommand implements Command…”应改为“class SaveCustomerCommand extends BusinessTransactionCommand…”。(我的自动导入功能中存在一个小而尴尬的漏洞。)[在第 9 版中已更正]
第 485 页: 在最后一个代码示例中,Person martin = Registry.personFinder().find(1);
行应改为Person martin = f1.find(1);
。[在第 10 版中已更正]
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 497 页: 在第二段的最后一句话中,“you can accumulate charges against an occupant customer even you can't do much billing”应改为“you can accumulate charges against an occupant customer even if you can't do much billing”。[在第 10 版中已更正]
第 4 版中的错误
页面选项卡: 总体而言,页面边缘的选项卡效果很好。但是,从第 426 页开始,所有选项卡都向上移动了一格,这令人遗憾地破坏了效果。[在第 5 版中已更正]
第 9 页: 在第二段中,有几个地方 Swordfish 和 Camel 没有大写。[在第 5 版中已更正]
第 17 页: 第二段的最后一句话缺少右括号。[在第 5 版中已更正]
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 24 页: 在倒数第二段中,“… try to keep all the code…”应改为“… try to keep all of a node's code…”。[在第 5 版中已更正]
第 33 页: 在最后一段的倒数第二句话中,language 拼写错误。[在第 5 版中已更正]
第 34 页:(仅限第 7 版)在某些副本中,由于印刷错误,此页完全空白。如果您遇到此问题,请联系 Addison Wesley 的 John Fuller。[在第 8 版中已更正]
第 34 页: 在倒数第三行中,“you only need a single class for each table”应改为“you only need a single object for each table”。[在第 6 版中已更正]
第 44 页: 第三段的第 3 句话,“…linked object as a Embedded Value…”应改为“…linked object as an Embedded Value…”。[在第 5 版中已更正]
第 45 页: 在继承部分第一段的最后一行中,“hierarchy; Class Table Inheritance”应使用冒号而不是分号。[在第 5 版中已更正]
第 52 页: 第二段的第一句话,“If you do things outside of a transaction…”应改为“If you do things outside of your transaction…”。所有访问事务性数据库的操作都发生在某个事务中,但有时您希望在您关注的主要事务之外执行某些操作。[在第 5 版中已更正]
第 66 页: 在第二行中,“It may consists of a single request”应改为“It may consistsof a single request”。[在第 6 版中已更正]
第 67 页: 在第二段中,“…arrange things so that the programs enters an isolated zone…”应改为“…arrange things so that the programsenters an isolated zone…”。[在第 6 版中已更正]
第 74 页: 在第四段中,“You have to decide what risks you want take”应改为“You have to decide what risks you want to take”。[在第 6 版中已更正]
第 76 页: 在第二段的第 3 行中,“…business transaction not leave the record…”应改为“…business transaction does not leave the record…”。[在第 6 版中已更正]
第 76 页: 在第一段的第二句话中,“…commit phase of the system transaction, when the user hits Save within a system transaction.”应改为“…commit phase of the system transaction, when the user hits Save, within a system transaction.”(缺少逗号)。[在第 5 版中已更正]
第 78 页: 在最后一段中,“The main problem over process-per-session…”应改为“The main problem of process for request over process-per-session…”。[在第 5 版中已更正]
第 83 页: 在会话状态的第四段中,“But it's not just changes that are a problem”应改为“But it's not just direct changes that are a problem”。[在第 5 版中已更正]
第 91 页: 在第三行中,“have to have to pay”应改为“have to pay”。[在第 5 版中已更正]
第 97 页: 在“Down to the Data Source Layer”的第一段开头,“Once you've chose your domain layer…”应改为“Once you've chosen your domain layer…”。[在第 5 版中已更正]
第 101 页: 在第二段的第 6 行中,“CMP”应改为“Container Managed Persistance (CMP)”。[在第 5 版中已更正]
第 102 页: 顶部的继续段落缺少最后的句号。[在第 5 版中已更正]
第 106 页: 在第五行中,“I tend to look as it…”应改为“I tend to look at it…”。[在第 5 版中已更正]
第 117 页: 在最后一段的第二句话中,“some of the order behavior is only needed only for it”应改为“some of the order behavior is only neededonlyfor it”。[在第 5 版中已更正]
第 118 页: 在 Java 实现的第三段中,“Entity beans can't be re-entrant…”应改为“Entity beans shouldn't be re-entrant…”。(虽然您可以使实体 bean 可重入,但这样做会使您面临一些危险的并发问题。)[在第 6 版中已更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 130 页: 在页面中间的段落中,“updating the revenue recognition tables”应改为“updating the revenue recognition tables(复数错误)。[在第 5 版中已更正]
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 158 页: 在包含许多 append 调用的代码块中,最后一个缺少最后几个字符。该行应改为
result.append("\n");[在第 5 版中已更正]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 207 页: 在第一个代码示例中,class Domain Object 应改为 class DomainObject(无空格)。[在第 10 版中已更正]
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 291 页: 页面上的第一个代码示例显示了类 Mapper 上的 Update 方法。
public virtual void Update (DomainObject arg) { Save (arg); }这是错误的代码片段。它应该改为
public virtual long Insert (DomainObject obj) { obj.Id = GetNextID(); AddRow(obj); Save(obj); return obj.Id; }自动代码导入很棒,但我仍然需要导入正确的片段![在第 6 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 326 页: 在 PersonRepository 的代码示例中,List
行
public List dependentsOf(aPerson) {应改为
public List dependentsOf(Person aPerson) {(第 5 版修复了此问题,但引入了另一个错误,重复了
List
:-()[在第 6 版中已更正]
第 326 页: 在 Repository 的代码示例中,List
行
protected List matching(aCriteria) {应改为
protected List matching(Criteria aCriteria) {遗憾的是,我的贡献者无法利用我的自动代码导入机制。[在第 5 版中已更正]
第 351 页: 第三段的最后一行。“(providing your HTML is XHMTL…”应改为“(providing your HTML is XHTML…”。当然。[在第 9 版中已更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 436 页: 在代码中,“class EditCustomerCommand implements Command…”应改为“class EditCustomerCommand extends BusinessTransactionCommand…”。类似地,“class SaveCustomerCommand implements Command…”应改为“class SaveCustomerCommand extends BusinessTransactionCommand…”。(我的自动导入功能中存在一个小而尴尬的漏洞。)[在第 9 版中已更正]
第 485 页: 在最后一个代码示例中,Person martin = Registry.personFinder().find(1);
行应改为Person martin = f1.find(1);
。[在第 10 版中已更正]
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 497 页: 在第二段的最后一句话中,“you can accumulate charges against an occupant customer even you can't do much billing”应改为“you can accumulate charges against an occupant customer even if you can't do much billing”。[在第 10 版中已更正]
第 3 版中的错误
页面选项卡: 总体而言,页面边缘的选项卡效果很好。但是,从第 426 页开始,所有选项卡都向上移动了一格,这令人遗憾地破坏了效果。[在第 5 版中已更正]
第 9 页: 在第二段中,有几个地方 Swordfish 和 Camel 没有大写。[在第 5 版中已更正]
第 17 页: 第二段的最后一句话缺少右括号。[在第 5 版中已更正]
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 24 页: 在倒数第二段中,“… try to keep all the code…”应改为“… try to keep all of a node's code…”。[在第 5 版中已更正]
第 33 页: 第二段的第一句话:“One the biggest reasons”应改为“One of the biggest reasons”。[在第 4 版中已更正]
第 33 页: 在最后一段的倒数第二句话中,language 拼写错误。[在第 5 版中已更正]
第 33 页:最后一段的最后一句话“Database Administrations (DBAs) also like...” 应改为“Database Administrators (DBAs) also like...” [已在第 4 版中更正]
第 34 页:(仅限第 7 版)在某些副本中,由于印刷错误,此页完全空白。如果您遇到此问题,请联系 Addison Wesley 的 John Fuller。[在第 8 版中已更正]
第 34 页: 在倒数第三行中,“you only need a single class for each table”应改为“you only need a single object for each table”。[在第 6 版中已更正]
第 36 页:第二段“All of these forces push you to in'direction” 应改为“All of these forces push you to indirection” (删除多余的撇号) [已在第 4 版中更正]
第 44 页: 第三段的第 3 句话,“…linked object as a Embedded Value…”应改为“…linked object as an Embedded Value…”。[在第 5 版中已更正]
第 44 页:第 4 段“which can be either binary (BLOB) textual (CLOB” 应改为“which can be either binary (BLOB) or textual (CLOB” [已在第 4 版中更正]
第 45 页: 在继承部分第一段的最后一行中,“hierarchy; Class Table Inheritance”应使用冒号而不是分号。[在第 5 版中已更正]
第 45 页:继承的第一段末尾“...relational system traditionally do poorly” 应改为“...relational systems traditionally do poorly”。 [已在第 4 版中更正]
第 45 页:继承的第一段中间“You can haveaone table...” 应改为“You can have one table...” [已在第 4 版中更正]
第 48 页:最后一段的最后一句话“You may want to pull similar data from both XML messages, CICS transactions, and relational tables.” 应改为“You may want to pull similar data from a combination of XML messages, CICS transactions, and relational tables.” [已在第 4 版中更正]
第 49 页:使用元数据的第 3 段:<field name = customer ...
应改为 (缺少引号) <field name = "customer" ...
[已在第 4 版中更正]
第 52 页: 第二段的第一句话,“If you do things outside of a transaction…”应改为“If you do things outside of your transaction…”。所有访问事务性数据库的操作都发生在某个事务中,但有时您希望在您关注的主要事务之外执行某些操作。[在第 5 版中已更正]
第 61 页:第一段末尾“depending some condition” 应改为“depending on some condition” [已在第 4 版中更正]
第 64 页:第二段“...easy to understand as well aswell asfamiliar.” 应改为“...easy to understand as well as familiar.” [已在第 4 版中更正]
第 66 页: 在第二行中,“It may consists of a single request”应改为“It may consistsof a single request”。[在第 6 版中已更正]
第 67 页: 在第二段中,“…arrange things so that the programs enters an isolated zone…”应改为“…arrange things so that the programsenters an isolated zone…”。[在第 6 版中已更正]
第 68 页:最后一段“Martin edits the Customer class, which makes calls on the Order class” 应改为“Martin edits the Customer class and adds some calls to the Order class”。 [已在第 4 版中更正]
第 74 页:业务和系统事务之前的段落“... should look at each transaction ande decide...” 应改为“... should look at each transaction and decide...” [已在第 4 版中更正]
第 74 页: 在第四段中,“You have to decide what risks you want take”应改为“You have to decide what risks you want to take”。[在第 6 版中已更正]
第 76 页: 在第二段的第 3 行中,“…business transaction not leave the record…”应改为“…business transaction does not leave the record…”。[在第 6 版中已更正]
第 76 页: 在第一段的第二句话中,“…commit phase of the system transaction, when the user hits Save within a system transaction.”应改为“…commit phase of the system transaction, when the user hits Save, within a system transaction.”(缺少逗号)。[在第 5 版中已更正]
第 78 页: 在最后一段中,“The main problem over process-per-session…”应改为“The main problem of process for request over process-per-session…”。[在第 5 版中已更正]
第 82 页:第三段的最后一句话“If we forgo...” 应改为“If we forego...” [已在第 4 版中更正]
第 83 页: 在会话状态的第四段中,“But it's not just changes that are a problem”应改为“But it's not just direct changes that are a problem”。[在第 5 版中已更正]
第 86 页:第三段中间“...as many features as quicklywithas you would with...” 应改为“...as many features as quickly as you would with...” [已在第 4 版中更正]
第 89 页:第五段“If you base your distribution strategy onaclasses...” 应改为“If you base your distribution strategy on classes...” [已在第 4 版中更正]
第 91 页: 在第三行中,“have to have to pay”应改为“have to pay”。[在第 5 版中已更正]
第 97 页: 在“Down to the Data Source Layer”的第一段开头,“Once you've chose your domain layer…”应改为“Once you've chosen your domain layer…”。[在第 5 版中已更正]
第 98 页:标题“Data Source Table Module (125)” 应改为“Data Source for Table Module (125)” [已在第 4 版中更正]
第 99 页:倒数第二段缺少句号。 [已在第 4 版中更正]
第 99 页:标题“The Presentation Layer” 应为更高一级标题,并进行相应的格式化 (以及在目录中)。 [已在第 4 版中更正]
第 100 页:一些技术特定建议的第一段中间“... reason I've concentrating on...” 应改为“... reason I'm concentrating on...” [已在第 4 版中更正]
第 101 页: 在第二段的第 6 行中,“CMP”应改为“Container Managed Persistance (CMP)”。[在第 5 版中已更正]
第 102 页: 顶部的继续段落缺少最后的句号。[在第 5 版中已更正]
第 106 页: 在第五行中,“I tend to look as it…”应改为“I tend to look at it…”。[在第 5 版中已更正]
第 117 页: 在最后一段的第二句话中,“some of the order behavior is only needed only for it”应改为“some of the order behavior is only neededonlyfor it”。[在第 5 版中已更正]
第 118 页: 在 Java 实现的第三段中,“Entity beans can't be re-entrant…”应改为“Entity beans shouldn't be re-entrant…”。(虽然您可以使实体 bean 可重入,但这样做会使您面临一些危险的并发问题。)[在第 6 版中已更正]
第 119 页:“何时使用它”第二段的第一句话应改为“One factor that comes into this is how comfortable the development team is with domain objects” [已在第 4 版中更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 130 页: 在页面中间的段落中,“updating the revenue recognition tables”应改为“updating the revenue recognition tables(复数错误)。[在第 5 版中已更正]
第 148 页:示例的第二段第二句话“In find it useful...” 应改为“I find it useful...” [已在第 4 版中更正]
第 150 页:从 public DataRow this[long key]
开始的代码片段的中间部分应标明为在 PersonGateway 类中。 [已在第 4 版中更正]
第 151 页:代码片段的标题应改为 class PersonGateway
[已在第 4 版中更正]
第 151 页:代码行 long key = new PersonGatewayDS().GetNextID()
应改为 long key = GetNextID()
[已在第 4 版中更正]
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 158 页: 在包含许多 append 调用的代码块中,最后一个缺少最后几个字符。该行应改为
result.append("\n");[在第 5 版中已更正]
第 169 页:第二段“For simpler applications, though, may not be worth...” 应改为“For simpler applications, though, it may not be worth...” [已在第 4 版中更正]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 207 页: 在第一个代码示例中,class Domain Object 应改为 class DomainObject(无空格)。[在第 10 版中已更正]
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 239 页:第五段“... but if you're testing is good enough...” 应改为“... but if your testing is good enough...” [已在第 4 版中更正]
第 249 页:“何时使用它”之后的第一个段落“...since there are really noanyalternatives...” 应改为“...since there are really no alternatives...” [已在第 4 版中更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 291 页: 页面上的第一个代码示例显示了类 Mapper 上的 Update 方法。
public virtual void Update (DomainObject arg) { Save (arg); }这是错误的代码片段。它应该改为
public virtual long Insert (DomainObject obj) { obj.Id = GetNextID(); AddRow(obj); Save(obj); return obj.Id; }自动代码导入很棒,但我仍然需要导入正确的片段![在第 6 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 326 页: 在 PersonRepository 的代码示例中,List
行
public List dependentsOf(aPerson) {应改为
public List dependentsOf(Person aPerson) {(第 5 版修复了此问题,但引入了另一个错误,重复了
List
:-()[在第 6 版中已更正]
第 326 页: 在 Repository 的代码示例中,List
行
protected List matching(aCriteria) {应改为
protected List matching(Criteria aCriteria) {遗憾的是,我的贡献者无法利用我的自动代码导入机制。[在第 5 版中已更正]
第 351 页: 第三段的最后一行。“(providing your HTML is XHMTL…”应改为“(providing your HTML is XHTML…”。当然。[在第 9 版中已更正]
第 354 页:第一段的最后一句话“...involve program logic, which program logic everywhere...” 应改为“...involve program logic, which like program logic everywhere...” [已在第 4 版中更正]
第 354 页:第二段“...compiling the pageoron its first request...” 应改为“...compiling the page on its first request...” [已在第 4 版中更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 362 页:第二段“for example , a .NET” 应改为“for example , a .NET object” [已在第 4 版中更正]
第 362 页:第三段“... the transform don't have to be a string...” 应改为“... the transform doesn't have to be a string...” [已在第 4 版中更正]
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 391 页:最后一段“The main difference is that a service layer doesn't have to be remote and thus doesn't need to have only fine-grained methods.” 应改为“The main difference is that a service layer doesn't have to be remote and thus doesn't need to have only coarse-grained methods.” [已在第 4 版中更正]
第 402 页:第一段第二句话“Data Transfer Objectwillusually carries much more...” 应改为“Data Transfer Object usually carries much more...” [已在第 4 版中更正]
第 406 页:第四段开头“Another alternative is to useasome form of ..." 应改为“Another alternative is to use some form of ..." [已在第 4 版中更正]
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 436 页: 在代码中,“class EditCustomerCommand implements Command…”应改为“class EditCustomerCommand extends BusinessTransactionCommand…”。类似地,“class SaveCustomerCommand implements Command…”应改为“class SaveCustomerCommand extends BusinessTransactionCommand…”。(我的自动导入功能中存在一个小而尴尬的漏洞。)[在第 9 版中已更正]
第 457 页:最后一行“... reduce this risk; if not run, a simple session...” 应改为 (逗号位置错误) “... reduce this risk; if not, run a simple session...” [已在第 4 版中更正]
第 470 页:页面中间的错误消息 Null Parameter bassed for msg type...
应改为 Null Parameter passed for msg type..
。 除非,当然,你喜欢把参数附加到鱼身上。 [已在第 4 版中更正]
第 475 页:“何时使用它”下的段落中,以“I Often...” 开头的句子应改为“I often...” (首字母大写错误)。 [已在第 4 版中更正]
第 485 页: 在最后一个代码示例中,Person martin = Registry.personFinder().find(1);
行应改为Person martin = f1.find(1);
。[在第 10 版中已更正]
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 496 页:第二段的第二句话“Often the right thing is same...” 应改为“Often the right thing is the same...” [已在第 4 版中更正]
第 497 页: 在第二段的最后一句话中,“you can accumulate charges against an occupant customer even you can't do much billing”应改为“you can accumulate charges against an occupant customer even if you can't do much billing”。[在第 10 版中已更正]
第 502 页:第一段的第一句话“...nextId() select the next available number...” 应改为“...nextId() selects the next available number...” [已在第 4 版中更正]
第 502 页:最后一段的第三句话“... to find the file rather then looking...” 应改为“... to find the file rather than looking...” [已在第 4 版中更正]
第 505 页:第三段“... a lot of our application functionality dependents on...” 应改为“... a lot of our application functionality depends on...” [已在第 4 版中更正]
第 505 页:最后一段的第一句话“...a tax service that deployed...” 应改为“...a tax service that's deployed...” [已在第 4 版中更正]
第 505 页:第五段中间的第二个 Gateway (466) 缺少右括号。 [已在第 4 版中更正]
第 510 页:“何时使用它”的第一段“...Record Set, and a compelling reason...” 应改为“...Record Set, and that's a compelling reason...” [已在第 4 版中更正]
第 1 版至第 3 版中的错误
页面选项卡: 总体而言,页面边缘的选项卡效果很好。但是,从第 426 页开始,所有选项卡都向上移动了一格,这令人遗憾地破坏了效果。[在第 5 版中已更正]
封底内页:在“How do I interact with the database” 下添加一行“I'm using Table Module(125) -> Table Data Gateway(144) [已在第 3 版中更正]
第 9 页: 在第二段中,有几个地方 Swordfish 和 Camel 没有大写。[在第 5 版中已更正]
第 17 页: 第二段的最后一句话缺少右括号。[在第 5 版中已更正]
第 21 页: 第 5 行,“there is no a human being”应改为“there is noahuman being”。[在第 19 版中已更正]
第 21 页: 顶行:“would be particularly for communication with existing packages”应改为“would be particularly common for communication with existing packages”。[在第 13 版中已更正]
第 24 页: 在倒数第二段中,“… try to keep all the code…”应改为“… try to keep all of a node's code…”。[在第 5 版中已更正]
第 33 页: 第二段的第一句话:“One the biggest reasons”应改为“One of the biggest reasons”。[在第 4 版中已更正]
第 33 页: 在最后一段的倒数第二句话中,language 拼写错误。[在第 5 版中已更正]
第 33 页:最后一段的最后一句话“Database Administrations (DBAs) also like...” 应改为“Database Administrators (DBAs) also like...” [已在第 4 版中更正]
第 34 页:(仅限第 7 版)在某些副本中,由于印刷错误,此页完全空白。如果您遇到此问题,请联系 Addison Wesley 的 John Fuller。[在第 8 版中已更正]
第 34 页: 在倒数第三行中,“you only need a single class for each table”应改为“you only need a single object for each table”。[在第 6 版中已更正]
第 36 页:第二段“All of these forces push you to in'direction” 应改为“All of these forces push you to indirection” (删除多余的撇号) [已在第 4 版中更正]
第 44 页: 第三段的第 3 句话,“…linked object as a Embedded Value…”应改为“…linked object as an Embedded Value…”。[在第 5 版中已更正]
第 44 页:第 4 段“which can be either binary (BLOB) textual (CLOB” 应改为“which can be either binary (BLOB) or textual (CLOB” [已在第 4 版中更正]
第 45 页: 在继承部分第一段的最后一行中,“hierarchy; Class Table Inheritance”应使用冒号而不是分号。[在第 5 版中已更正]
第 45 页:继承的第一段末尾“...relational system traditionally do poorly” 应改为“...relational systems traditionally do poorly”。 [已在第 4 版中更正]
第 45 页:继承的第一段中间“You can haveaone table...” 应改为“You can have one table...” [已在第 4 版中更正]
第 48 页:最后一段的最后一句话“You may want to pull similar data from both XML messages, CICS transactions, and relational tables.” 应改为“You may want to pull similar data from a combination of XML messages, CICS transactions, and relational tables.” [已在第 4 版中更正]
第 49 页:使用元数据的第 3 段:<field name = customer ...
应改为 (缺少引号) <field name = "customer" ...
[已在第 4 版中更正]
第 52 页: 第二段的第一句话,“If you do things outside of a transaction…”应改为“If you do things outside of your transaction…”。所有访问事务性数据库的操作都发生在某个事务中,但有时您希望在您关注的主要事务之外执行某些操作。[在第 5 版中已更正]
第 61 页:第一段末尾“depending some condition” 应改为“depending on some condition” [已在第 4 版中更正]
第 64 页:第二段“...easy to understand as well aswell asfamiliar.” 应改为“...easy to understand as well as familiar.” [已在第 4 版中更正]
第 66 页: 在第二行中,“It may consists of a single request”应改为“It may consistsof a single request”。[在第 6 版中已更正]
第 67 页: 在第二段中,“…arrange things so that the programs enters an isolated zone…”应改为“…arrange things so that the programsenters an isolated zone…”。[在第 6 版中已更正]
第 68 页:最后一段“Martin edits the Customer class, which makes calls on the Order class” 应改为“Martin edits the Customer class and adds some calls to the Order class”。 [已在第 4 版中更正]
第 71 页:第三段“each transaction must complete on and all-or-nothing basis” 应改为“each transaction must complete on an all-or-nothing basis”。 [已在第 3 版中更正]
第 74 页:业务和系统事务之前的段落“... should look at each transaction ande decide...” 应改为“... should look at each transaction and decide...” [已在第 4 版中更正]
第 74 页: 在第四段中,“You have to decide what risks you want take”应改为“You have to decide what risks you want to take”。[在第 6 版中已更正]
第 75 页:第二段“This is what we call a business transaction, and that displays the same ACID properties as a system transaction seems a reasonable expectation” 应改为“This is what we call a business transaction, and that it displays the same ACID properties as a system transaction seems a reasonable expectation”。 [已在第 3 版中更正]
第 76 页: 在第二段的第 3 行中,“…business transaction not leave the record…”应改为“…business transaction does not leave the record…”。[在第 6 版中已更正]
第 76 页: 在第一段的第二句话中,“…commit phase of the system transaction, when the user hits Save within a system transaction.”应改为“…commit phase of the system transaction, when the user hits Save, within a system transaction.”(缺少逗号)。[在第 5 版中已更正]
第 78 页: 在最后一段中,“The main problem over process-per-session…”应改为“The main problem of process for request over process-per-session…”。[在第 5 版中已更正]
第 82 页:第三段的最后一句话“If we forgo...” 应改为“If we forego...” [已在第 4 版中更正]
第 83 页: 在会话状态的第四段中,“But it's not just changes that are a problem”应改为“But it's not just direct changes that are a problem”。[在第 5 版中已更正]
第 86 页:第三段中间“...as many features as quicklywithas you would with...” 应改为“...as many features as quickly as you would with...” [已在第 4 版中更正]
第 88 页:图 7.1 的图注应改为“Distributing an application by putting different components on different nodes (not recommended!)” [已在第 3 版中更正]
第 89 页:第五段“If you base your distribution strategy onaclasses...” 应改为“If you base your distribution strategy on classes...” [已在第 4 版中更正]
第 91 页: 在第三行中,“have to have to pay”应改为“have to pay”。[在第 5 版中已更正]
第 91 页:在“Working with the Distribution Boundary” 部分下的第二段,“The coarse-grained objects don't really do anything but so they act as a facade for the fine-grained objects” 应改为“The coarse-grained objects don't really do anything but delegate so they act as a facade for the fine-grained objects”。 [已在第 3 版中更正]
第 96 页:第四段“Also. my experiences” 应改为“Also, my experiences...” (多余的句号)。 [已在第 3 版中更正]
第 97 页: 在“Down to the Data Source Layer”的第一段开头,“Once you've chose your domain layer…”应改为“Once you've chosen your domain layer…”。[在第 5 版中已更正]
第 98 页:标题“Data Source Table Module (125)” 应改为“Data Source for Table Module (125)” [已在第 4 版中更正]
第 99 页:倒数第二段缺少句号。 [已在第 4 版中更正]
第 99 页:标题“The Presentation Layer” 应为更高一级标题,并进行相应的格式化 (以及在目录中)。 [已在第 4 版中更正]
第 100 页:一些技术特定建议的第一段中间“... reason I've concentrating on...” 应改为“... reason I'm concentrating on...” [已在第 4 版中更正]
第 101 页: 在第二段的第 6 行中,“CMP”应改为“Container Managed Persistance (CMP)”。[在第 5 版中已更正]
第 101 页:第一段的最后一句话“If you're not sure about EJB...” 应删除。 (这句话没有意义,我只能想到它可能是从后面的段落中遗漏的。) [已在第 3 版中更正]
第 102 页: 顶部的继续段落缺少最后的句号。[在第 5 版中已更正]
第 106 页: 在第五行中,“I tend to look as it…”应改为“I tend to look at it…”。[在第 5 版中已更正]
第 106 页:第二段“...Nilsson uses stored procedures extensivel,” 应改为“...Nilsson uses stored procedures extensively,”。 [已在第 3 版中更正]
第 113 页:Gateway
类的 findRecognitionsFor()
代码示例中存在冗余。 第二行代码:stmt = db.prepareStatement(findRecognitionsStatement);
可以删除,因为它与前一行代码的作用相同。 [已在第 3 版中更正]
第 117 页: 在最后一段的第二句话中,“some of the order behavior is only needed only for it”应改为“some of the order behavior is only neededonlyfor it”。[在第 5 版中已更正]
第 118 页: 在 Java 实现的第三段中,“Entity beans can't be re-entrant…”应改为“Entity beans shouldn't be re-entrant…”。(虽然您可以使实体 bean 可重入,但这样做会使您面临一些危险的并发问题。)[在第 6 版中已更正]
第 119 页:“何时使用它”第二段的第一句话应改为“One factor that comes into this is how comfortable the development team is with domain objects” [已在第 4 版中更正]
第 121 页: 在类图中,类 Product 上的方法“calculateRecognitions”应改为“calculateRevenueRecognitions”(为了与第 123 页的代码保持一致)。
第 122 页:第一段,“The strategy pattern [Gang of Four] is a well-known OO pattern that allows you combine a group...” 应改为“The strategy pattern [Gang of Four] is a well-known OO pattern that allows you to combine a group...” [已在第 3 版中更正]
第 130 页: 在页面中间的段落中,“updating the revenue recognition tables”应改为“updating the revenue recognition tables(复数错误)。[在第 5 版中已更正]
第 139 页:ApplicationService 的 UML 类图中,方法列表“+getIntegationGateway() : IntegrationGateway” 应改为“+getIntegrationGateway() : IntegrationGateway”。 [已在第 3 版中更正]
第 141 页:ApplicationServiceBeanImpl 的 UML 类图中,方法列表“+getIntegationService() : IntegrationService” 应改为“+getIntegrationService() : IntegrationService”。 [已在第 3 版中更正]
第 145 页:第二段,“bidirectional dependencies the domain objects” 应改为“bidirectional dependencies between the domain objects”。 [已在第 3 版中更正]
第 148 页:示例的第二段第二句话“In find it useful...” 应改为“I find it useful...” [已在第 4 版中更正]
第 149 页:构造函数 (protected DataSetGateway(
) 和 protected DataSetGateway(DataSetHolder holder)
) 应改为 protected DataGateway(
) 和 protected DataGateway(DataSetHolder holder)
[已在第 3 版中更正]
第 150 页:从 public DataRow this[long key]
开始的代码片段的中间部分应标明为在 PersonGateway 类中。 [已在第 4 版中更正]
第 151 页:代码片段的标题应改为 class PersonGateway
[已在第 4 版中更正]
第 151 页:代码行 long key = new PersonGatewayDS().GetNextID()
应改为 long key = GetNextID()
[已在第 4 版中更正]
第 156 页: 在 PersonGateway.update() 和 insert() 的代码示例中,使用了 getID() 方法,但没有说明 getID() 来自哪里。ID 将存储在行数据网关的层级超类型中 [无法在重印中修复]
第 158 页: 在包含许多 append 调用的代码块中,最后一个缺少最后几个字符。该行应改为
result.append("\n");[在第 5 版中已更正]
第 169 页:第二段“For simpler applications, though, may not be worth...” 应改为“For simpler applications, though, it may not be worth...” [已在第 4 版中更正]
第 189 页:第二句话,“more than one thread can't get access a Unit of Work” 应改为“more than one thread can't get access to a Unit of Work” ". [已在第 3 版中更正]
第 189 页:“.NET 实现”下的段落,“a data set, which is a series of objects arranged like tables, rows, database and columns.” 应改为“a data set, which is a series of objects arranged like database tables, rows,databaseand columns.” [已在第 3 版中更正]
第 192 页: 最后一个文本段落,“Now we can now”应改为“Now we cannow”。[在第 19 版中已更正]
第 201 页: 在第六段中,“These problem don't hit”应改为“These problems don't hit”。
第 201 页: 在第二段中,“a legal value field value”应改为“a legalvaluefield value”。
第 206 页: 在最后一个代码示例中,标题“class Domain Object”应改为“class DomainObject”(无空格)。
第 207 页: 在第一个代码示例中,class Domain Object 应改为 class DomainObject(无空格)。[在第 10 版中已更正]
第 211 页: 在第三段中,“… a loading function than can be supplied …”应改为“… a loading function that can be supplied …”
第 238 页: 第四段,最后一句话。“diff with the database is you're using”应改为“diff with the database if you're using”。[在第 16 版中已更正]
第 239 页:第五段“... but if you're testing is good enough...” 应改为“... but if your testing is good enough...” [已在第 4 版中更正]
第 249 页:“何时使用它”之后的第一个段落“...since there are really noanyalternatives...” 应改为“...since there are really no alternatives...” [已在第 4 版中更正]
第 259 页: 在第一个文本段落的第四行中,“If it not I load…”应改为“If not, I load…”
第 270 页:第一段“refers to tit” 应改为“refers to it”。 那些认为他们发现了弗洛伊德式的口误的人应该注意,在英国有一种叫做“tits”的小型鸟类。 [已在第 3 版中更正]
第 279 页: 最后一节的开头,“Rremember”应改为“Remember”。[在第 16 版中已更正]
第 291 页: 页面上的第一个代码示例显示了类 Mapper 上的 Update 方法。
public virtual void Update (DomainObject arg) { Save (arg); }这是错误的代码片段。它应该改为
public virtual long Insert (DomainObject obj) { obj.Id = GetNextID(); AddRow(obj); Save(obj); return obj.Id; }自动代码导入很棒,但我仍然需要导入正确的片段![在第 6 版中已更正]
第 294 页: 在第二段的结尾,“Thus, youthusneed a key”使用过度。[在第 16 版中已更正]
第 326 页: 在 PersonRepository 的代码示例中,List
行
public List dependentsOf(aPerson) {应改为
public List dependentsOf(Person aPerson) {(第 5 版修复了此问题,但引入了另一个错误,重复了
List
:-()[在第 6 版中已更正]
第 326 页: 在 Repository 的代码示例中,List
行
protected List matching(aCriteria) {应改为
protected List matching(Criteria aCriteria) {遗憾的是,我的贡献者无法利用我的自动代码导入机制。[在第 5 版中已更正]
第 331 页:第三段中“Fundamentally presentation and view are about different concerns”应改为“Fundamentally presentation and model are about different concerns.” 在这种模式下,我认为 presentation 是 MVC 视图和(输入)控制器的组合。[已在第三版中更正]
第 331 页:第三段中“and they people”应改为“and they”[已在第三版中更正]
第 351 页: 第三段的最后一行。“(providing your HTML is XHMTL…”应改为“(providing your HTML is XHTML…”。当然。[在第 9 版中已更正]
第 354 页:第一段的最后一句话“...involve program logic, which program logic everywhere...” 应改为“...involve program logic, which like program logic everywhere...” [已在第 4 版中更正]
第 354 页:第二段“...compiling the pageoron its first request...” 应改为“...compiling the page on its first request...” [已在第 4 版中更正]
第 357 页: 在第三个项目符号中,“(the number of balls he faced divided by the runs he scored)”应改为相反的顺序:“(the runs he scored divided by the number of balls he faced)”。
第 362 页:第二段“for example , a .NET” 应改为“for example , a .NET object” [已在第 4 版中更正]
第 362 页:第三段“... the transform don't have to be a string...” 应改为“... the transform doesn't have to be a string...” [已在第 4 版中更正]
第 371 页: 示例部分的第一句话。“This approach to a Two Step View uses a two-stage XLST transformation”应改为“This approach to a Two Step View uses a two-stage XSLT transformation”。[在第 19 版中已更正]
第 374 页: 在第二个代码示例中,应删除album = Album.findNamed("1234");
行。
第 380 页: 在第一段的第一句话中,“the view with which display the response”应改为“the view with which to display the response”。[在第 16 版中已更正]
第 389 页: “How it Works”下的第一句话。“Remote Facade tackles the distribution problem which the standard OO approach…”应改为“Remote Facade tackles the distribution problem with the standard OO approach…”
第 391 页:最后一段“The main difference is that a service layer doesn't have to be remote and thus doesn't need to have only fine-grained methods.” 应改为“The main difference is that a service layer doesn't have to be remote and thus doesn't need to have only coarse-grained methods.” [已在第 4 版中更正]
第 402 页:第一段第二句话“Data Transfer Objectwillusually carries much more...” 应改为“Data Transfer Object usually carries much more...” [已在第 4 版中更正]
第 402 页:第三段中“you usually don't want the domain object classes on the server”应改为“you usually don't want the domain object classes on the client [已在第三版中更正]
第 406 页:第四段开头“Another alternative is to useasome form of ..." 应改为“Another alternative is to use some form of ..." [已在第 4 版中更正]
第 412 页: 第二句话包含多余的词语:“I write methods to read and write an XML element to representthat classeach Data Transfer Object class.”。[在第 16 版中已更正]
第 423 页: 最后一个代码块,第一行class class AbstractMapper...
应改为class
。[在第 19 版中已更正]class AbstractMapper...
第 423 页: 在页面底部的代码示例中,我们需要插入另一行代码。在stmt.setLong(1,object.getId().longValue());
行之后,添加stmt.setInt(2, object.getVersion() + 1);
行。[在第 16 版中已更正]
第 429 页: 倒数第二行。“access to the lock table must by serialized”应改为“access to the lock table must be serialized”。
第 432 页: 在代码块中,class ExclusiveReadLockManagerDBImpl implements ExclusiveLockManager...
应改为class ExclusiveReadLockManagerDBImpl implements ExclusiveReadLockManager
。[在第 19 版中已更正]
第 432 页: 在create table
代码行中,ownerid bigint
应改为ownerid varchar
。
第 436 页: 在代码中,“class EditCustomerCommand implements Command…”应改为“class EditCustomerCommand extends BusinessTransactionCommand…”。类似地,“class SaveCustomerCommand implements Command…”应改为“class SaveCustomerCommand extends BusinessTransactionCommand…”。(我的自动导入功能中存在一个小而尴尬的漏洞。)[在第 9 版中已更正]
第 457 页:最后一行“... reduce this risk; if not run, a simple session...” 应改为 (逗号位置错误) “... reduce this risk; if not, run a simple session...” [已在第 4 版中更正]
第 470 页:页面中间的错误消息 Null Parameter bassed for msg type...
应改为 Null Parameter passed for msg type..
。 除非,当然,你喜欢把参数附加到鱼身上。 [已在第 4 版中更正]
第 475 页:“何时使用它”下的段落中,以“I Often...” 开头的句子应改为“I often...” (首字母大写错误)。 [已在第 4 版中更正]
第 485 页: 在最后一个代码示例中,Person martin = Registry.personFinder().find(1);
行应改为Person martin = f1.find(1);
。[在第 10 版中已更正]
第 494 页: 所示的分配算法仅适用于正数金额。我将负数金额的解决方案留给读者作为练习。[无法在重印中修复]
第 496 页:第二段的第二句话“Often the right thing is same...” 应改为“Often the right thing is the same...” [已在第 4 版中更正]
第 497 页: 在第二段的最后一句话中,“you can accumulate charges against an occupant customer even you can't do much billing”应改为“you can accumulate charges against an occupant customer even if you can't do much billing”。[在第 10 版中已更正]
第 502 页:第一段的第一句话“...nextId() select the next available number...” 应改为“...nextId() selects the next available number...” [已在第 4 版中更正]
第 502 页
代码示例中存在错误。类插件工厂中的静态代码应改为
static { try { String propsFile = System.getProperty("plugins"); props.load(new FileInputStream(propsFile)); } catch (Exception ex) { throw new ExceptionInInitializerError(ex); } }
这对我来说是一个相当令人震惊的错误,因为我为我的自动代码导入系统感到自豪,以避免此类错误。更糟糕的是,我无法弄清楚这个错误是如何出现的。即使是我发送给 AW 的最终 FrameMaker 文件也包含正确的代码。有些谜团永远在那里困扰着我们。
[已在第三版中更正]第 502 页:最后一段的第三句话“... to find the file rather then looking...” 应改为“... to find the file rather than looking...” [已在第 4 版中更正]
第 503 页:向下滚动一半,代码示例标题class IdGenerator
应改为interface IdGenerator
。[已在第三版中更正]
第 505 页:第三段“... a lot of our application functionality dependents on...” 应改为“... a lot of our application functionality depends on...” [已在第 4 版中更正]
第 505 页:最后一段的第一句话“...a tax service that deployed...” 应改为“...a tax service that's deployed...” [已在第 4 版中更正]
第 505 页:第五段中间的第二个 Gateway (466) 缺少右括号。 [已在第 4 版中更正]
第 510 页:“何时使用它”的第一段“...Record Set, and a compelling reason...” 应改为“...Record Set, and that's a compelling reason...” [已在第 4 版中更正]
第 512 页:[Brown and Whitenack] 的 URL 应为 http://members.aol.com/kgb1001001/Chasms.htm。在书中,我忘记将 Chasms 大写。[已在第三版中更正]
非常感谢 =Duncan Sung W. Kim、Kent Wang、Pradyumn Sharma、Timothy Halloran、Kaspar Thommen、Roger Stasko、Einar Jónsson、Ray Ye、Neil Lowden、David van Leerdam、Yamano Yuji、Anatoly Varakin、Chris Bernard、Mark Wilden、Eduard Penzhorn、Gregor Hohpe、Craig Demyanovich、Thierry Bernard、Scott Hodson、Geoff Catlin、Danny Trieu、Ray Ye、Ted Schrader、Héctor Domínguez、Steve Berczuk、George Hicks、Yousif Masoud、Dylan Nissley 和 Emanuel Reisinger 指出并告知我这些错误。