Java 如何正确添加/操作实体组中的数千个子项?

Java 如何正确添加/操作实体组中的数千个子项?,java,google-app-engine,jdo,Java,Google App Engine,Jdo,这进一步说明了我在BigTables/JDO中的工作 假设一个TransactionAccount在其transactions列表中可能会有多达10000个对象,那么Goodle app engine是如何工作的 如何将对象添加到如此大的列表中,而不将整个列表加载到内存中?(假设10000个对象不应该加载到内存中?) 我不是想问你如何做作业,我只是不知道从哪里开始解决这个问题,应用程序引擎文档和谷歌搜索没有帮助:( //仅用于示例,不用于编译 @持久的 公共类事务帐户{ @主键 @持久性(val

这进一步说明了我在BigTables/JDO中的工作

假设一个
TransactionAccount
在其
transactions
列表中可能会有多达10000个对象,那么Goodle app engine是如何工作的

如何将对象添加到如此大的列表中,而不将整个列表加载到内存中?(假设10000个对象不应该加载到内存中?)

我不是想问你如何做作业,我只是不知道从哪里开始解决这个问题,应用程序引擎文档和谷歌搜索没有帮助:(

//仅用于示例,不用于编译
@持久的
公共类事务帐户{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
公钥;
私人长期余额;
私人长交易计数;
@元素(dependent=“true”)
私有列表事务=新的ArrayList();
....
public long getBalance(){return balance;}
}
@持久的
私有类事务{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
公钥;
公开日期;
公共长金额;
}

此问题已提出,但尚未解决。

请尝试将transactions属性标记为
@NotPersistent
,这样它就不会存储在数据存储中。您可以使用(更多信息)获取给定TransactionAccount的事务实体。这样,您就可以为给定的帐户存储任意多个交易,因为它们并非全部存储在帐户实体中

另一个不太激烈的措施是使用此注释将transactions属性标记为未索引:

@Extension(vendorName = "datanucleus", key = "gae.unindexed", value="true") 

帐户的事务仍将存储在列表中,但它们不会被索引,这将使其更为可行。不过,在10-100k事务左右,您已经达到1MB实体大小限制,如果您使用
@NotPersistent

尝试标记事务属性
@NotPersistent
,,因此,它根本不存储在数据存储中。您可以使用(更多in)获取给定TransactionAccount的事务实体。这样,您应该能够为给定帐户存储任意多个事务,因为它们并不全部存储在account实体中

另一个不太激烈的措施是使用此注释将transactions属性标记为未索引:

@Extension(vendorName = "datanucleus", key = "gae.unindexed", value="true") 
帐户的事务仍将存储在列表中,但它们不会被索引,这将使其更为可行。不过,您已经达到了1MB实体大小限制(大约10-100k个事务),如果您使用
@NotPersistent
,这不会是一个问题