4

ローカル永続性のない小さな Web アプリケーションを構築しています。リモート RESTful エンドポイントからデータをロードします。

Order と呼ばれる Model オブジェクトが 1 つあります。webapp が example.com/order/1234 などのリクエストを受信すると、web app がリモート REST エンドポイントに対して GET リクエスト (サービス層から?) を作成し、ドメイン モデルに入力するようにします。

これについて最善の方法は何ですか?永続化レイヤーを設定せずに roo を有用な方法で使用することは可能で価値がありますか?

4

1 に答える 1

-1

2 つのオプション:

  • H2 永続化プロバイダーをメモリ内のみとして使用する
  • 通常どおり 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();
    }
    }
    
于 2012-09-02T08:50:34.200 に答える