簡體   English   中英

將GWT與持久對象一起使用的正確方法是什么?

[英]What is the correct approach to using GWT with persistent objects?

我目前正在使用GWT通過Google App引擎開發一個簡單的Web應用程序。 應該注意的是,這是我第一次嘗試這種任務。

我遇到了以下問題/問題:

我有一個簡單的類(getters / setters,僅此而已。為了清楚起見,我將此類稱為DataHolder ),並且我想使其持久化。 為此,我使用了JDO ,它要求我添加一些注釋,更具體地說是添加一個Key字段用作主鍵。

問題在於,使用Key類需要我導入com.google.appengine.api.datastore.Key ,這在服務器端是可以的,但是由於GWT不允許,我不能在客戶端使用DataHolder (據我所知)。

因此,我創建了一個姐妹類ClientDataHolder ,該類幾乎相同,盡管它沒有所有的JDO批注也沒有Key字段。

現在這確實有效,但是感覺好像我做錯了。 使用這種方法將需要為我希望擁有的每個實體維護兩個單獨的類。

所以我的問題是:是否有更好的方法?

謝謝。

您認為保留兩個對象的版本感覺不對是正確的-GWT的整個想法是您可以在客戶端共享服務器端對象,並且如果您開始與這兩個對象離婚,您並不會完全GWT的優勢。

關於解決您的問題,除了Objectify之外 ,我什么都沒有聽到,這是為App Engine構建的數據存儲區中的備用API。 它具有許多優點,而且它也是GWT安全的,因此您可以在客戶端和服務器之間來回傳遞密鑰和所有內容。 在這里閱讀更多

但是,如果您想使用JDO / JPA,則可以將您的實體ID存儲為String或Longs,如下所示:

@PersistenceCapable(identityType = IdentityType.APPLICATION)  
public class SomeDomainClass implements Serializable {  
  @PrimaryKey  
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)  
  @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")  
  String id;
}

在此處閱讀有關內容的更多信息(這是我無恥地偷走了該代碼示例的地方)

暫無
暫無

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

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