我正在构建一个没有本地持久性的小型 Web 应用程序。它从远程 RESTful 端点加载数据。
它有一个模型对象,称为 Order。当 web 应用程序收到 example.com/order/1234 之类的请求时,我希望 web 应用程序向远程 REST 端点发出 GET 请求(来自服务层?),然后填充我的域模型。
解决此问题的最佳方法是什么?在没有设置持久层的情况下以任何有用的方式使用 roo 是否可能且值得?
我正在构建一个没有本地持久性的小型 Web 应用程序。它从远程 RESTful 端点加载数据。
它有一个模型对象,称为 Order。当 web 应用程序收到 example.com/order/1234 之类的请求时,我希望 web 应用程序向远程 REST 端点发出 GET 请求(来自服务层?),然后填充我的域模型。
解决此问题的最佳方法是什么?在没有设置持久层的情况下以任何有用的方式使用 roo 是否可能且值得?
2个选项:
正常创建 roo 实体,然后推入所有方法并覆盖以使用本地 HashMap。我以前这样做过,如下所示:
@RooJavaBean
@RooToString
@RooJpaActiveRecord(versionField="", identifierField="name", identifierType=String.class, versionType=Byte.class)
@RooJson
public class MonitorMetric {
static Map<String, MonitorMetric> data=new HashMap<String, MonitorMetric>();
@Id
private String name;
long totTime;
long minTime=Long.MAX_VALUE;
long maxTime=Long.MIN_VALUE;
int countStarted;
int countFinished;
@DateTimeFormat(style = "SS")
private Date lastAttempt;
@DateTimeFormat(style = "SS")
private Date lastSuccess;
@DateTimeFormat(style = "SS")
private Date lastFailure;
public double getAvgTime() {
return (countFinished>0 ? totTime/countFinished : 0);
}
public String getName() {
return this.name;
}
public void setName(String id) {
this.name = id;
}
public static long countMonitorMetrics() {
return data.size();
}
public static List<MonitorMetric> findAllMonitorMetrics() {
return new ArrayList<MonitorMetric>(data.values());
}
public static List<MonitorMetric> findMonitorMetricEntries(int firstResult, int maxResults) {
int lastResult = (firstResult+maxResults > data.size() ? data.size() : firstResult+maxResults);
return new ArrayList<MonitorMetric>(data.values()).subList(firstResult, lastResult);
}
public static MonitorMetric findMonitorMetric(String name) {
if (name == null || name.length() == 0) return null;
return data.get(name);
}
public void persist() {
data.put(getName(), this);
}
public MonitorMetric merge() {
data.put(getName(), this);
return this;
}
public void remove() {
data.remove(getName());
}
public void flush() {
}
public void clear() {
data.clear();
}
}