min*_*imo 0 google-app-engine datanucleus
我正在为ORM使用Java和JPA.
最初我是这样定义实体键:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
Run Code Online (Sandbox Code Playgroud)
但是这导致ids变得非常快,并且以不可预测的方式增长(... 19,20,22,1003 ... 1007,1014,1015,2004 ...)
这似乎与文档相矛盾,文档声明"最简单的关键字段是一个长整数值,当对象首次保存到数据存储区时,JPA会自动填充该类,并且该类的所有其他实例都具有唯一值.键使用@Id注释和@GeneratedValue(strategy = GenerationType.IDENTITY)注释"
所以我找到了这个单元测试,然后切换到它在那里完成的方式:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
Run Code Online (Sandbox Code Playgroud)
更新了一些GQL语句后迁移得很好,但我仍然看到每次键增加1000.
我应该使用GenerationType.TABLE吗?或者我应该在Long而不是Key字段上使用IDENTITY?
我希望在我的live(beta)应用程序中不断更改之前得到一些确定的答案.不幸的是,到目前为止我在dev env中使用的所有方案都会产生连续的密钥,因此除了部署之外,没有办法测试新的方法.
提前致谢.
在App Engine上进行连续键很难.文档从未声明自动生成的密钥是连续的 - 只是它们是唯一的.
应用引擎上最简单的解决方案是设计您的密钥,这样您就不需要它们是连续的.考虑到BigTable的设计方式,如果你确实有连续递增的密钥,那么每当平板电脑需要拆分时,你可能会遇到一些性能瓶颈.
归档时间: |
|
查看次数: |
132 次 |
最近记录: |