天天看點

JPA學習

jpa是一套對象持久化規範,可以通過多種工具實作它。比如常見的hibernate。按說初學就該照貓畫虎的寫例子,可是總改不了探究為什麼的好奇心。于是在經曆了不少曲折和困惑之後,終于把hibernate和eclipselink兩種實作的例子都完成了,也體會了一點二者的差別。

先看在eclipse裡的預設jpa項目的做法:

建立jpaproject,填寫項目名稱和targetruntime(因為隻是個簡單的例子,不需要部署到伺服器上,就選了jre),再點幾次next之後,就過不去了,因為要求必須使用一個userlibrary。這就是要添加實作jpa的類庫。如果使用eclipselink可以選擇下載下傳,如果使用hibernate,可以建立一個,然後把hibernate包裡的各個jar檔案加進來。最終二者就是在persistence.xml檔案的描述上有些許差別,這也是jpa規範的目的所在——使代碼盡量不要綁定特定的orm架構。下面是示例代碼:

hibernate示例代碼:

除了包名不同,其他代碼一模一樣。兩個項目也都用的同一張表,先執行這個項目可以自動建立表,再執行上面的項目就不會報錯了。

幾個小插曲:

noinstall版本的mysql在修改my.ini的時候,增加basedir和datadir路徑需要用/分隔,如:d:/soft/mysql,否則啟動不了服務

選擇建立普通java project也是可以完成示例的。而如果選擇建立的是jpa project,每添加一個@entity注釋的類,系統就會自動去檢查是否增加到了中(沒有添加也可以執行,但作為有點強迫症的程式員,看着這個紅叉實在是難受),如果不希望系統檢查,删掉.project中的語句——<nature>org.eclipse.wst.common.project.facet.core.nature</nature>,重新開機eclipse即可。

繼續閱讀