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