
2011年10月10日
> 引言
在Jorm中,主鍵的生成策略主要有AUTO、UUID、GUID、FOREIGN、SEQUENCE、INCREMENT、IDENTITY、ASSIGNED,下面分別來講述這幾種策略的應(yīng)用場(chǎng)景
> GenerationType.AUTO
Jorm的默認(rèn)主鍵策略,自動(dòng)增長(zhǎng)型,自增步長(zhǎng)為1,適用數(shù)據(jù)類型int,long,如:
private int id // 默認(rèn)策略就是AUTO,故可以不寫主鍵策略
或
@Id(GenerationType.AUTO) // 默認(rèn)策略可以省去不寫的哦~
private int id
> GenerationType.INCREMENT
顧名思義,增長(zhǎng)型,適用數(shù)據(jù)類型int,long。自增步長(zhǎng)為1
1> 使用默認(rèn)自增步長(zhǎng)1,如:
@Id(GenerationType.INCREMENT)
@Column("item_id")
private long id;
2> 使用自定義步長(zhǎng),如:
@Id(value = GenerationType.INCREMENT, incrementBy=3) // 這里自增步長(zhǎng)為3,注意寫法
private int id;
> GenerationType.IDENTITY
對(duì)于那些實(shí)現(xiàn)了自動(dòng)增長(zhǎng)的數(shù)據(jù)庫(kù),可以使用IDENTITY,如MySQL,SQL Server,PostreSQL,前提是
MySQL數(shù)據(jù)庫(kù)中建表語(yǔ)句定義了主鍵為:id(你的主鍵列名) int NOT NULL AUTO_INCREMENT 或
id(你的主鍵列名) bigint NOT NULL AUTO_INCREMENT
SQL Server數(shù)據(jù)庫(kù)中建表語(yǔ)句定義了主鍵為:id int identity(xx, xx) 如此類似
PostreSQL數(shù)據(jù)庫(kù)中建表語(yǔ)句定義了主鍵為:id bigserial 或 id serial
使用例子
@Id(GenerationType.IDENTITY)
@Column("id")
private long sid;
> GenerationType.UUID
與數(shù)據(jù)庫(kù)無關(guān)的策略,適用數(shù)據(jù)類型:字符串類型,適用所有數(shù)據(jù)庫(kù),長(zhǎng)度須大于或等于32
@Id(GenerationType.UUID)
private String id;
> GenerationType.GUID
與UUID有點(diǎn)類似,不過這個(gè)id值是又?jǐn)?shù)據(jù)庫(kù)來生成的,適用于數(shù)據(jù)庫(kù)MySQL、PostgreSQL、SQL Server、Oracle等
@Id(GenerationType.GUID)
private String id;
> GenerationType.FOREIGN
適用于一對(duì)一關(guān)系中引用了另一個(gè)對(duì)象的主鍵作為自己的主鍵的情形,如:
@Id(GenerationType.FOREIGN)
@Column("identity_number")
private String identity;
> GenerationType.SEQUENCE
這個(gè)不用多說,應(yīng)用于Oracle、H2、PostgreSQL等有sequence序列功能的數(shù)據(jù)庫(kù)
> GenerationType.ASSIGNED
用戶自定義生成,需要由程序員手工給主鍵主動(dòng)賦值
posted @
2011-10-10 15:17 jadmin 閱讀(1492) |
評(píng)論 (3) |
編輯 收藏