Identity Field

Identity Field - Saves a database ID field in an object to maintain identity between an in-memory object and a database row.
Identity Field是很简单的。你所要做的只是把你的关系数据库表的主键存放在对象的域中即可。
使用Identity Field时需要考虑的几个问题:
  1. 如何选择主键。首先要考虑的是是否选择有意义的键。有意义的键由于人的失误可能会出错,不太可信。其次是使用简单键还是复合键。复合键通常是有意义的,注意保证其唯一性和不变规则。对键所进行的通常操作有相等测试和取得下一个键。因此需要考虑相等测试的性能和取得下一个键的容易程度。最后是选择表内唯一的键还是数据内唯一的键。使用数据库内唯一的键就可以使用单一的Identity Map。
  2. 如果在对象中表示Identity Field。最简单的表示形式是对象中和数据库表中主键类型一致的域。复合键比较复杂,最好写出一个键类(Key class)。
  3. 获得一个键。有3种方式:数据库自动生成:不推荐使用这种方式,不同的DBMS实现方式不同。GUID(全局唯一的标识符):一般过长,影响相等性测试的性能。自己生成主键:一种做法是用SQL的max函数来取得,这种做法严重影响并发的性能,不推荐。一个好的做法是单独使用一个键表(key table)。如果你使用表内唯一的主键,则键表中每一个行表示一个表的下一个可用的键。如果是数据库内唯一的主键,则键表中只有一列。使用键表的时候,把对表的访问放在一个单独的事务中,这样可以提高性能。使用键表的时候,如果使用表内唯一的主键,可以减少数据库表中行上的竞争。把获取新主键的代码放在一个单独的类中。

你可能感兴趣的:(sql)