我遇到了问题,每次我从 gwt 请求工厂检索一个集合时,都会为该集合中的每个实体调用“findEntity()”方法。而这个“findEntity()”方法调用 SQL 数据库。
我发现发生这种情况是因为请求工厂检查了“ServiceLayerDecorator.isLive()”方法中每个实体的“活跃度”(也在这里描述:GWT 中的 requestfactory 和 findEntity 方法)
所以我提供了我自己的 RequestFactoryServlet:
public class MyCustomRequestFactoryServlet extends RequestFactoryServlet {
public MyCustomRequestFactoryServlet() {
super(new DefaultExceptionHandler(), new MyCustomServiceLayerDecorator());
}
}
还有我自己的 ServiceLayerDecorator:
public class MyCustomServiceLayerDecorator extends ServiceLayerDecorator {
/**
* This check does normally a lookup against the db for every element in a collection
* -> Therefore overridden
*/
@Override
public boolean isLive(Object domainObject) {
return true;
}
}
到目前为止,这有效,并且我没有对数据库进行如此大量的查询。
现在我想知道我是否会遇到其他问题?或者有没有更好的方法来解决这个问题?