使用Apache OpenJPA開發EJB 3.0應用,第5部分: 實體標識的自動產生

來源:互聯網
上載者:User

資料的唯一性是所有應用程式非常基本的要求,由開發人員或者使用者來維護這種 唯一性存在著較大的風險,因此,由系統自動產生唯一標識是一種常見的做法。 OpenJPA 中支援四種不同的實體標識自動建置原則:

容器自動產生的實體 標識;

使用資料庫的自動成長欄位產生實體標識;

根據資料庫序 列號(Sequence)技術產生實體標識;

使用資料庫表的欄位產生實體標識 ;

這四種方式各有優缺點,開發人員可以根據實際情況進行選擇。

可選擇的注釋

要讓容器和資料庫結合管理實體標識的自動產生,根據實際 情況的不同,開發人員可以選擇 javax.persistence.* 包下面的 GeneratedValue 、SequenceGenerator、TableGenerator 三個注釋來描述實體的識別欄位。

@javax.persistence.GeneratedValue

每一個需要自動產生實體標 識的實體都需要為它的實體識別欄位提供 GeneratedValue 注釋和相應的參數, OpenJPA 架構會根據注釋和參數來處理實體標識的自動產生。

使用 GeneratedValue 注釋自動產生的實體標識可以是數實值型別欄位如 byte、short、 int、long 等,或者它們對應的封裝器類型 Byte、Short、Integer、Long 等, 也可以是字串類型。

GeneratedValue 注釋可以支援兩個屬性 strategy 和 generator。

strategy

strategy 是 GenerationType 類型的枚 舉值,它的內容將指定 OpenJPA 容器自動產生實體標識的方式。strategy 屬性 可以是下列枚舉值:

GeneratorType.AUTO

表示實體標識由 OpenJPA 容器自動產生,這也是 Strategy 屬性的預設值。

GenerationType.IDENTITY

OpenJPA 容器將使用資料庫的自增長字 段為新增加的實體物件賦唯一值,作為實體的標識。這種情況下需要資料庫提供 對自增長欄位的支援,常用的資料庫中,HSQL、SQL Server、MySQL、DB2、Derby 等資料庫都能夠提供這種支援。

GenerationType.SEQUENCE

表示使用資料庫的序號為新增加的實體對 象賦唯一值,作為實體的標識。這種情況下需要資料庫提供對序號的支援,常 用的資料庫中,Oracle、PostgreSQL 等資料庫都能夠提供這種支援。

GenerationType.TABLE

表示使用資料庫中指定表的某個欄位記錄實體 對象的標識,通過該欄位的增長為新增加的實體物件賦唯一值,作為實體的標識 。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.