主鍵遞增策略
JPA提供的四種用法:TABLE,SEQUENCE,IDENTITY,AUTO
TABLE:使用一個(gè)特定的數(shù)據(jù)庫(kù)表格來(lái)保存主鍵
SEQUENCE:根據(jù)底層數(shù)據(jù)庫(kù)的序列來(lái)生成主鍵,條件是數(shù)據(jù)庫(kù)支持序列,主要是Oracle
IDENTITY:主鍵由數(shù)據(jù)庫(kù)自動(dòng)生成(主要是自動(dòng)增長(zhǎng)型,mysql)
AUTO:主鍵由程序控制
Hibernate主鍵策略生成器hibernate提供多種主鍵生成策略,有點(diǎn)是類似于JPA 有的是hibernate特有:
native: 對(duì)于oracle采用sequence方式,對(duì)于 MySQL和sql server采用identity(自增主鍵生成機(jī)制) native就是將主鍵的生成工作交由數(shù)據(jù)庫(kù)完成
uuid: 采用128位的uuid算法生成主鍵,uuid被編碼為一個(gè)32位16進(jìn)制數(shù)字的字符串占用空間大(字符串類型)
identity:使用SQL Server和MySQL的自增字段,這個(gè)方法不能放到Oracle中,Oracle不支持自增字段,要設(shè)定sequence
sequence: 調(diào)用底層數(shù)據(jù)庫(kù)的序列來(lái)生成主鍵,要設(shè)定序列名 不然hibernate無(wú)法找到increment: 插入數(shù)據(jù)的時(shí)候hibernate會(huì)給主鍵添加一個(gè)自增的主鍵,但是一個(gè)hibernate實(shí)例就維護(hù)一個(gè)計(jì)數(shù)器,所以在多個(gè)實(shí)例運(yùn)行的時(shí)候不能使用這個(gè)方法foreign: 使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的主鍵,通常和<one-to-one>聯(lián)系起來(lái)使用。
guid: 采用數(shù)據(jù)庫(kù)底層的guid算法機(jī)制。對(duì)應(yīng)MySQl的uuid()函數(shù) SQL Server的newid()函數(shù) Oracle的sys_guid()函數(shù)
參考文章:http://blog.csdn.net/itmyhome1990/article/details/7460378