我不確定處理收集/查找表的最佳做法/在RequestFactory
中。GWT RequestFactory,ValueProxy或EntityProxy用於收集/查找表
例如,如果我已經以下兩個域對象:在Experiment
表使用一個ForeignKeyÑrealtionship Experiment
和UnitOfMeasure
之間:
@Entity
public class Experiment {
private Long id;
private String name;
@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE})
private UnitOfMeasure unitOfMeasure;
public Experiment() { }
public String getName() {
return name;
}
public Long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public UnitOfMeasure getUnitOfMeasure() {
return unitOfMeasure;
}
public void setUnitOfMeasure(UnitOfMeasure unitOfMeasure) {
this.unitOfMeasure = unitOfMeasure;
}
}
@Entity
public class UnitOfMeasure {
private Long id;
private String unit_type;
public UnitOfMeasure() { }
public String getUnitType() {
return unit_type;
}
public Long getId() {
return id;
}
public void setUnitType(String unitType) {
this.unit_type = unitType;
}
}
這是一個正常的單向1。
我有限量的不同的UnitOfMeasure
實例通常不會改變。
Web應用程序提供了一個視圖,用戶可以在其中更改Experiment
實例的某些屬性。該視圖使用Editor framework
。若要更改特定Experiment
的UnitOfMeasure
,我使用ValueListBox
並呈現unit_type
屬性。
由於可UnitOfMeasure
實例列表是靜態的我用AutoBeanFactory
創建我放到HTML主頁和應用程序在啓動過程中我分析它(對於所有其他收集如表值同樣的事情)JSON字符串,並將其儲存在一個Singleton類實例(AppData
),我傳遞給`setAcceptableValues``。
目前我得到UnitOfMeasureProxy
從EntityProxy
但爲了解碼/與AutoBeanFactory
我有EntityProxyCategory
註釋工廠編碼。我以某種方式懷疑ValueProxy
會更合適。
但是,使用ValueProxy
當我更改特定Experiment
的UnitOfMeasure
時,整個ValueProxy
實例通過線路傳輸。
從數據庫的角度來看,只需要更改Experiment
表中的外鍵值。
那麼最好的做法是什麼(ValueProxy
vs EntityProxy
)分別收集像表和子值?
感謝您與''ProxySerializer''尖端。不知道這一點。但是,如果我只通過它們的ID來引用模型引用,那麼這不會完全破壞ORM層/ /''RequestFactory''的目的嗎? 在「Person」和「Address」的傳統示例中,如果我只通過ID而不是實體本身對「Address」和「Person」之間的關係建模,我必須確保手動當我想要顯示地址時傳送地址?同樣的事情適用於後端?如果我想輕鬆遍歷從人到地址怎麼辦?只有ID我必須從數據庫中獲取它? –
您可以將關係映射爲只讀,並且ID可寫;即'AddressProxy getAddress()'和'int getAddressId(); void setAddressId(int id)'。不過,就個人/地址用例而言,這不太可能是跨會話;這與你的'UnitOfMeasureProxy'不一樣(你在應用程序的整個生命週期中保存在緩存中) –
啊,我明白了。我想我可以爲集合做同樣的事情,像子值(''UnitOfMeasureProxy''),這些值在應用程序啓動時加載一次,而且無論父實體如何都是靜態的。在這種情況下,我可能也會根據實際的實體忽略getter,因爲我已經緩存/加載了所有可用類型的列表。在這種情況下,我可能可以使用普通的「ListBox」而不是「ValueListBox」。 –