WebObjects/EOF/使用 EOF/EOF 最佳实践
外观
首先,不要造成伤害 - 在阅读本文之前,请阅读并遵守EOF 诫命。
不要使用
MyEO eo = new MyEO(); ec.insertObject(eo);
首选这种形式
MyEO eo = (MyEO) EOUtilities.createAndInsertInstance(ec, "MyEO");
这有两个主要优点。一是,它防止使用未插入 EOEditingContext 的 EO(参见EOF 诫命)。二是,它支持 EOModel(s) 中两个或多个实体由同一个 Java 类实现的情况。
这里需要问一个合理的问题,如果这很好
MyNewPage nextPage = (MyNewPage)pageWithName(MyNewPage.class.getName());
那么为什么不这样呢?
MyEO eo = (MyEO) EOUtilities.createAndInsertInstance(ec, MyEO.class.getName());
这里的关键是,createAndInsertInstance? 的第二个参数是来自模型的 EOEntity 名称,而不是类名。对于组件创建,它是类名。问题是实体名称和类名通常不相同。类名将包含包名,但实体名称不会。此外,我遇到过模型中的多个实体由同一个类实现的情况。Gary Teter 在 WireHose 框架中很好地利用了这一点。