簡體   English   中英

GWT、RPC 和 SQL,您的結果集是保留在服務器端還是可以在客戶端使用它?

[英]GWT, RPC, and SQL, does your resultset remain server-side or can you utilise it client side?

我已經從 Android 簡單地更改為 GWT,以使我的應用程序現在可以在線運行。

我意識到從 Android 應用程序到 GWT 項目有很多不同之處,但其中之一,我無法理解,所以也許你們中的某個人可以為我澄清一下。

我可以通過 RPC 訪問我的數據庫,我可以通過帶有 onFailure 和 OnSuccess 的 DefaultCallback 將此數據發送到我的 GUI。 像這樣:

@Override
public void sayHello(String name) {
    this.serviceAsync.sayHello(name,  new DefaultCallback());
}

    private class DefaultCallback implements AsyncCallback {

    @Override
    public void onFailure(Throwable caught) {
        System.out.println("An error has occured");
    }

    @Override
    public void onSuccess(Object result) {
        System.out.println("Response received");
        if (result instanceof String) {
            mainGUI.updateLabel(String.valueOf(result));
        }
    }
}

當我在這里訪問我的數據庫時, SQL開始發揮作用,對吧?,讓我們說我想填充一個帳戶表。 我會訪問表格,進行循環,然后填充表格。

我像這樣使用 SQL:

        Connection c = null;

    try {
        Class.forName("org.sqlite.JDBC");
        c = DriverManager.getConnection("server");
    }
    catch (Exception e) {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
    }
    return c;

和這樣的結果集:

    ResultSet myGet(Connection db, String sql){
    try {
        return db.createStatement().executeQuery(sql);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

但是,從 Android 中的 databaseHelper 開始,我可以輕松地運行游標,然后在循環中利用來自該游標的數據等等,我發現上面的“defaultCallback”方法非常嚴格。

因此,我的問題是:是否有提示/技巧可以為此增加一些靈活性? 為了使它更類似於您在 Java 中使用 resultSet 或在 Android 中使用 Cursor 的方式?

首先,我現在不會使用 GWT RPC。 我會采用 REST-ful 方法。 例如 domino-rest ( https://github.com/DominoKit/domino-rest ) 是在客戶端使用的一個很好的實現。 在服務器端,您可以使用 Spring Boot 或 jersey 或類似的東西來提供寧靜的服務。 除此之外,您需要一個單獨的數據模型來將您的結果傳輸到客戶端(需要對其進行序列化和反序列化以進行傳輸)。 在服務器端,您將擁有一個資源,它執行數據庫請求並將結果映射到數據對象中。

在這里你會找到一個例子:

https://github.com/NaluKit/nalu-examples/tree/master/devkexample

在 PersonService 類( https://github.com/NaluKit/nalu-examples/blob/master/devkexample/devkexample-server/src/main/java/de/gishmo/example/devk/server/service/PersonService. java ) 你會做你的數據庫請求並映射你的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM