Google app engine Objectify中的延迟保存是否适用于每个Java实体或每个Google云数据存储实体?

Google app engine Objectify中的延迟保存是否适用于每个Java实体或每个Google云数据存储实体?,google-app-engine,objectify,Google App Engine,Objectify,我们的应用程序逻辑有多个层次。每次调用save时,域层上的实体都映射到数据库实体 例如: class Sample(); // the domain entity @Entity("Sample") @Cache class DatabaseSample; // the database entity 假设修改了域实体并调用了save,这将把所有属性映射到一个新的数据库实体,然后这个数据库实体被保存延迟 假设同一个域实体再次修改并保存,这将再次将所有属性映射到新的数据库实体并调用延迟保存 两

我们的应用程序逻辑有多个层次。每次调用save时,域层上的实体都映射到数据库实体

例如:

class Sample(); // the domain entity

@Entity("Sample")
@Cache
class DatabaseSample; // the database entity
假设修改了域实体并调用了save,这将把所有属性映射到一个新的数据库实体,然后这个数据库实体被保存延迟

假设同一个域实体再次修改并保存,这将再次将所有属性映射到新的数据库实体并调用延迟保存


两个独立的Google云数据存储实体是否会相互竞争,例如,较新的存储会完全覆盖较旧的存储,还是会在请求期间客观化收集修改过的键值对,并在请求结束时保存一个合并的实体?

我不太明白这个问题,但我会给你一些可能有用的背景知识

如果延迟保存实体POJO,它只会在会话中将其标记为“保存此内容”。当会话关闭(事务结束)时,将保存任何标记为延迟保存(或删除)的内容

只有在保存到数据存储时,POJO才会映射到低级实体。您可以延迟保存同一对象无数次,但没有实际效果。事实上,这是核心用例-您可能有一个方法可以设置更改某些数据并需要保存,而另一个方法可以更改某些数据并需要保存。。。通过使用延迟保存,可以避免对数据存储进行单独的实际保存

如果你想做一些非常疯狂的事情,比如在延迟保存后更改
@Id
。。。不要。我真的不知道这会做什么,但你可能不会喜欢:-)

根据,在
save()
delete()
操作延迟到同一实体的情况下,最后一个操作获胜。但是,如果将这两个域实体映射到不同的数据库实体,则不会有任何覆盖。我是否理解你的应用程序逻辑?