Java 谷歌应用引擎:什么时候有自动识别码?
所以我在GAE的数据存储中创建用户帐户(使用Java) 实体被创建,(最终),太棒了!现在,对象的ID何时可用?是否需要“一段时间”才能对对象执行Java 谷歌应用引擎:什么时候有自动识别码?,java,google-app-engine,datastore,Java,Google App Engine,Datastore,所以我在GAE的数据存储中创建用户帐户(使用Java) 实体被创建,(最终),太棒了!现在,对象的ID何时可用?是否需要“一段时间”才能对对象执行getProperty(“ID”) 如果我立即需要ID,我是否应该手动分配1个ID供自己使用 我问这个问题是因为我可以自己运行一些代码测试,但这并不能最终解决ID是否在放置后“立即”生成的问题。。。从我所读到的内容来看,我怀疑我不应该依赖于此。我相信它应该非常快(30-50毫秒),在您的情况下,如果您在存储实体后立即尝试从数据存储中获取实体,它应该不会
getProperty(“ID”)
如果我立即需要ID,我是否应该手动分配1个ID供自己使用
我问这个问题是因为我可以自己运行一些代码测试,但这并不能最终解决ID是否在放置后“立即”生成的问题。。。从我所读到的内容来看,我怀疑我不应该依赖于此。我相信它应该非常快(30-50毫秒),在您的情况下,如果您在存储实体后立即尝试从数据存储中获取实体,它应该不会有问题 您可以使用log4j并尝试输出持续时间计时,以了解需要多长时间 例如 信息:持久化数据存储的时间:38毫秒
# A default log4j configuration for log4j users.
#
# To use this configuration, deploy it into your application's WEB-INF/classes
# directory. You are also encouraged to edit it as you like.
# Root logger option
log4j.rootLogger=INFO
# Configure the console as our one appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n
# tighten logging on the DataNucleus Categories
log4j.category.DataNucleus.JDO=WARN, A1
log4j.category.DataNucleus.Persistence=WARN, A1
log4j.category.DataNucleus.Cache=WARN, A1
log4j.category.DataNucleus.MetaData=WARN, A1
log4j.category.DataNucleus.General=WARN, A1
log4j.category.DataNucleus.Utility=WARN, A1
log4j.category.DataNucleus.Transaction=WARN, A1
log4j.category.DataNucleus.Datastore=WARN, A1
log4j.category.DataNucleus.ClassLoading=WARN, A1
log4j.category.DataNucleus.Plugin=WARN, A1
log4j.category.DataNucleus.ValueGeneration=WARN, A1
log4j.category.DataNucleus.Enhancer=WARN, A1
log4j.category.DataNucleus.SchemaTool=WARN, A1
保存实体时,它包含完整密钥,ID是密钥的一部分。所以,当实体可用时,它立即可用
请注意,实体ID不是实体的属性(除非您自己创建一个)。所以uou应该改为使用
entity.getKey().getId()
起初我不确定,但这里的信息支持这个答案,说明密钥立即可用-至少如果使用DatastoreService.put(),它是可用的。我同意这样的推论,即Id应该立即可用,因为需要基于上述研究构造密钥,毫秒数不应该是一个问题(如果GAE在未来变得非常快,并且您可以将实体存储在
# A default log4j configuration for log4j users.
#
# To use this configuration, deploy it into your application's WEB-INF/classes
# directory. You are also encouraged to edit it as you like.
# Root logger option
log4j.rootLogger=INFO
# Configure the console as our one appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n
# tighten logging on the DataNucleus Categories
log4j.category.DataNucleus.JDO=WARN, A1
log4j.category.DataNucleus.Persistence=WARN, A1
log4j.category.DataNucleus.Cache=WARN, A1
log4j.category.DataNucleus.MetaData=WARN, A1
log4j.category.DataNucleus.General=WARN, A1
log4j.category.DataNucleus.Utility=WARN, A1
log4j.category.DataNucleus.Transaction=WARN, A1
log4j.category.DataNucleus.Datastore=WARN, A1
log4j.category.DataNucleus.ClassLoading=WARN, A1
log4j.category.DataNucleus.Plugin=WARN, A1
log4j.category.DataNucleus.ValueGeneration=WARN, A1
log4j.category.DataNucleus.Enhancer=WARN, A1
log4j.category.DataNucleus.SchemaTool=WARN, A1