应用特定种子数据种群

时间:2010-06-11 04:36:12

标签: java hibernate database-design jpa java-ee

环境:JBoss,(h2,MySQl,postgres),JPA,Hibernate 3.3.x

@Id
@GeneratedValue(strategy = IDENTITY)
private Integer key;
  1. 目前我们的主键是使用上面的注释创建的。我们希望能够支持大量用户(〜百万用户),应该使用什么密钥。它应该是整数还是长整数,还是应该使用上述声明的无符号版本。

  2. 我们有一个j2ee应用程序,需要在安装时填充一些种子数据。在购买时,客户在应用程序之上创建自己的数据。我们只是想确保有足够的空间来发布,修改或添加未来版本的数据。支持这一点的最佳机制是什么,我们已经考虑从某个id(比如1000)启动所有表标识符,但这要求修改主键生成以使基于表或序列的生成器,并且我们有大约100个表。我们不确定这是否是正确的策略。

  3. 如果我们对密钥使用有符号整数方法,那么将种子数据作为从0和以下开始的所有内容(即-ve数)是否有意义,以便所有客户特定数据在0及以上可用(即+ ve数字)

1 个答案:

答案 0 :(得分:1)

  

目前,我们的主键是使用上述注释创建的。我们希望能够支持大量用户(〜百万用户),应该使用什么密钥。它应该是整数还是长整数,还是应该使用上述声明的无符号版本

来自Java教程的Primitive Data Types

  

int: int数据类型是32位带符号的二进制补码整数。它的最小值为-2,147,483,648,最大值为2,147,483,647(含)。对于整数值,此数据类型通常是默认选择,除非有理由(如上所述)选择其他内容。此数据类型很可能足以容纳您的程序将使用的数字,但如果您需要更广泛的值,请改用long

由您决定是否安全:)

  

(...)我们只是想确保有足够的空间来发布,修改或添加未来版本的数据。什么是最好的机制来支持这个

我会用上面提到的数据库对此进行测试,但是对种子数据使用负ID似乎是更安全的解决方案(没有可能的冲突)。如果它不起作用(我认为它应该),那么我相信TABLE策略将是最便携的解决方案。