2013年7月29日

Spring MVC 3 實作教學 (9) - 資料存取 ( 設定 Hibernate 與 Entity ) ( Use Hibernate and add Entity )

本篇針對資料存取採用 Hibernate 與 Spring MVC 達到 CRUD ( 新增、讀取、修改、刪除)功能,DB 方面使用 H2 Data Base。閱讀本篇文章可先參考前一篇 H2 Data Base 設定應該會更有幫助。此外因為資料存取部份複雜,所以會拆成數個部份一一介紹。



Hibernate:

基於使用 Hibernate 因此必須先取得相關 Library ,首先到 Hibernate 官方網站下載檔案,解壓縮之後可以看到資料夾 required 底下的 JAR 檔,分別為 :
(1.) antlr-2.7.7.jar
(2.) dom4j-1.6.1.jar
(3.) hibernate-commons-annotations-4.0.2.Final.jar
(4.) hibernate-core-4.2.3.Final.jar
(5.) hibernate-jpa-2.0-api-1.0.1.Final.jar
(6.) javassist-3.15.0-GA.jar
(7.) jboss-logging-3.1.0.GA.jar
(8.) jboss-transaction-api_1.1_spec-1.0.1.Final.jar

我下載的版本為 4.2.3 ,若版本有異動不需要擔心,只要將 required 部份加入即可。將上面的 JAR 檔放置再 /WebContent/WEB-INF/lib 底下後,接著我們需要設定 JPA EntityManagerFactory 於 Spring 設定檔 ( mercury-servlet.xml ),詳細可以參考官方文件。範例如下:


設定 LocalSessionFactoryBean 為實作 EntityManagerFactory 部份,dataSource 設定部份可以參考前一篇 H2 Data Base 設定。除此之外我們還需要 Hibernate Configuration 設定檔 ( 如範例為 hibernate.cfg.xml ),讀取路徑可以自行設定。最後設定 Hibernate Dialect 為 H2 模式且設定顯示出執行 SQL 語法。

接著要設定剛剛提到的 Hibernate Configuration,其範例如下:


我們將之後會使用到的 Entity 列在裡面,如範例我們將會在 package mercury.model 裡建立名為 User 的 Entity,故在此先加入 mapping class。

Entity:

剛剛有看到 hibernate.cfg.xml 裡面加入的 Entity,因此我們現在要來定義這個物件。這個 Entity 當然要根據我們 DB 建立的 Table 規格相同。還記得我們在 H2 Data Base 設定文章中有建了一個 User Table 嗎,因此我們的 Entity 會照著 User Table 規格來設計,範例內容如下:


範例中加入很多的 Annotation 屬於 Java Persistence 部份,其中更多細節可以參考 Java 說明文件。
@Table (name="user")
設定與對應的 Table 名稱相符合。

@Id 
代表此物件屬性 String id 為對應 User Table 的 Primary Key。

@Column(name="id", length=255)
代表此物件屬性 String id 對應為 User Table 的 id 欄位且欄位長度為 255。

到目前為止我們已經將 Hibernate 與 Entity 設定好了,下一篇文章將會討論到 DAO 與設定 Transaction Manager。

最後附上檔案位置分佈圖,參考如下:


其他 Spring Framework 相關教學可以參考本篇整理


熱門文章