0

我不确定处理 collection/lookup tables/in 的最佳做法是什么RequestFactory

例如,如果我有以下两个域对象:

@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;
    }
}

Experiment这是表中的 ForeignKey和UnitOfMeasure使用 ForeignKey之间的正常单向 1:n 关系Experiment
我有数量有限的不同UnitOfMeasure实例,这些实例通常不会改变。

Web 应用程序提供了一个视图,用户可以在其中更改Experiment实例的某些属性。该视图使用Editor framework. 为了更改UnitOfMeasure特定的,Experiment我使用 aValueListBox并渲染unit_type属性。

因为可用UnitOfMeasure实例的列表是静态的,所以我AutoBeanFactory用来创建一个 json 字符串,将其放入 HTML 主机页面,并在应用程序启动期间解析它(对于所有其他集合,如表值也是如此)并将它们存储在 Singleton 类实例中(AppData) 我传递给`setAcceptableValues`。

目前我UnitOfMeasureProxy来自EntityProxy但为了解码/编码它,AutoBeanFactory我必须用EntityProxyCategory. 我不知何故怀疑 aValueProxy会更合适。
然而,ValueProxy当我改变UnitOfMeasure一个特定Experiment的实例时,整个ValueProxy实例都是通过网络传输的。
然而,从数据库的角度来看,只需要更改Experiment表中外键的值。

那么分别收集表格和子值的最佳实践( ValueProxyvs )是什么?EntityProxy

4

1 回答 1

1

在许多情况下,对其他实体的引用最好使用它们的 ID 而不是EntityProxys 本身来建模(这是有争议的,但我认为对于服务器端代码,或者实际上任何跨越工作单元边界的代码也是如此——JPA EntityManager生命周期、休眠会话等-)

顺便说一句,序列化 RequestFactory 代理的正确方法是使用ProxySerializer
如果您有 s 列表,请确保使用 GWT 2.5.0-rc1 ValueProxy(请参阅issue 6961

于 2012-08-23T13:41:11.857 回答