Java 具有Postgres和GWT的密钥提供程序

Java 具有Postgres和GWT的密钥提供程序,java,postgresql,gwt,gwt2,postgresql-9.1,Java,Postgresql,Gwt,Gwt2,Postgresql 9.1,对于我的GWT项目 我最初构建了一个列表和一个*KEY_PROVIDER*,以唯一地标识列表中的记录。现在,我已经连接到Postgres数据库,我不知道是否需要将ProvideXey的对象传递到数据库,或者在使用数据库时完全删除它 早期- // Make a provider, connect the List with the provider! final ListDataProvider<Contact> sortProvider = new ListDataProvider&

对于我的GWT项目

我最初构建了一个列表和一个*KEY_PROVIDER*,以唯一地标识列表中的记录。现在,我已经连接到Postgres数据库,我不知道是否需要将ProvideXey的对象传递到数据库,或者在使用数据库时完全删除它

早期-

// Make a provider, connect the List with the provider!
final ListDataProvider<Contact> sortProvider = new ListDataProvider<Contact>(KEY_PROVIDER);
sortProvider.setList(CONTACTS);
// Create a data provider.
MyDataProvider sortProvider = new MyDataProvider();
sortProvider.addDataDisplay(table);
我不知道现在该怎么做

我需要通过考试吗-

MyDataProvider sortProvider = new MyDataProvider(KEY_PROVIDER);
相反


最佳实践应该是什么?谢谢

那么,
ProvidesKey
接口仅用于客户端(GWT)识别对象。这对于了解列表中选择的对象以及手动选择
单元格表中的另一行
/
单元格列表
非常重要

如果未指定
ProvidesKey
实现,CellWidgets将使用DTO的equals功能检查它们是否相等。如果对象本身发生更改,您可能会遇到问题。因此,最好指定
ProvidesKey
实现,而不依赖于使用
ListDataProvider
asynchdataprovider
还是自定义数据提供程序


顺便问一下,在您的示例中,MyDataProvider是什么?它是
AsyncDataProvider
的子类吗

MyDataProvider扩展了AsyncDataProvider并实现了AsyncCallBackSo,我可以推断ProviderKey用于在前端唯一地标识行,并且与数据库在后端处理记录的方式无关,因此两者都应该存在,以便以最佳方式处理数据。是的,这是正确的。您可能正在使用PostgreSQL中的长/序列作为主键。我想你的DTO在客户端会有一个很长的字段。您可以将该字段与
ProvidesKey
一起用作唯一标识符。