2012-04-10 58 views
0

Oracle很好地描述瞭如何使@Entity。但是,我不清楚如何實際添加/刪除表格。我也喜歡玫瑰印度explanation,但只是想澄清一般的想法。@實體與JSF,堅持與JPA的「你好世界」

對於具有CDI的JSF JEE6應用程序,我基本上可以創建一個@Entity類,在@Named bean中實例化一些實例,並使用Bean中的EntityManager將(CRUD操作)寫入MySQL數據庫?我可以使用Glassfish自帶的默認JPA?

只是想澄清一般的想法,然後再開始。

回答

4

一般來說,你至少有兩個選項:

  1. 創建數據庫表和參考文獻,然後根據數據庫中的表建立實體類(現代IDE從數據庫自動生成實體類提供工具表)

  2. 手動編寫實體類並從這些類創建數據庫。 JPA提供者通常通過在例如10 persistence.xml中設置特殊參數來允許這種情況。對於的EclipseLink:

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 

刪除所有現有的表,並創建從實體類(在開發過程中特別有用)換新的,而

<property name="eclipselink.ddl-generation" value="create-tables"/> 

只會創建一個新表,如果有不存在。

我可以使用Glassfish自帶的默認JPA?

是的,對於基於規範的功能。

+0

[wikipedia](http://en.wikipedia.org/wiki/Java_Persistence_API#JPA_2.0)列出了不同的「供應商」。其中一個需要被選中,並且沒有「默認」? – Thufir 2012-04-11 11:41:44

+0

是的,有不同的實現/供應商。 Glassfish附帶Eclipselink捆綁。每個實現都有其專有擴展,必須手動添加到項目中(如果要使用它們)。 – 2012-04-11 11:48:04

+0

啊,我看到TopLink現在是Eclipselink並且有某種FOSS許可。這種政治看起來有點令人失望,但至少它是開源的。謝謝(你的)信息。 – Thufir 2012-04-11 13:22:46