2012-08-22 53 views
4

我正在構建一個小型Web應用程序,它沒有本地持久性。它從遠程RESTful端點加載數據。從REST服務填充Spring Roo模型(沒有持久性)

它有一個Model對象,稱爲Order。當webapp收到example.com/order/1234這樣的請求時,我希望Web應用程序向遠程REST端點發出GET請求(從服務層?),然後填充我的域模型。

什麼是最好的方式去做這件事? 是否有可能&值得用任何有用的方式使用roo而不設置持久層?

回答

-1

2個選擇:

  • 使用H2持久性提供作爲其僅在內存
  • 創建袋鼠實體爲正常,那麼在所有的方法推動並覆蓋使用本地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(); 
    } 
    }