在JJpStudy中使用Hibernate
JJp 的基本數據是于伶的《學日語背單詞 1.0 》所帶的 japan.mdb 中的單詞表和《新版標準日本語》詞匯表( Excel ),而我學過的數據庫系統是 Oracle 和 mysql 。在這些格式中轉換需要很大的工作量,我寫了幾個 Java 類來做轉換,還沒有做完整。同學說,使用 Hibernate 可以避免這個問題,并且可以可以很快的封裝數據層,所以決定用她了。
?
從 Hibernate3.0 中文參考手冊大致瀏覽了一下,然后使用 MyEclipse 的工具配置并生成了實體類,初次使用,感覺非常棒!下面介紹一下配置過程。
首先得有數據庫,這里使用 Mysql5.0 。 Hibernate 也可以自動生成 Schema ,但是已經有數據庫(由 PowerDesigner9.5 生成)和數據(從 japan.mdb 和 Excel 導入)了,所以沒那么做,今后有機會再研究一下。 JJp 數據庫結構如下:
??? 首先,在
MyEclipse
里配置數據庫連接。在
Pereferences
里
MyEclipse
下有一個
Database Explorer
選項里配置
Mysql
驅動程序“
MySQL Connector/J Driver
”,主要是選擇
mysql-connector-java-
然后,將項目轉換為 Hibernate 兼容。方法是右鍵點擊項目名稱,在 MyEclipse 里選擇“ Add Hibernate Capabilites ”。這時會出現對話框,依次選擇庫文件夾 Library Folder 、配置文件路徑 Configuration Folder 并自動創建 Session 工廠類(用于獲取 Hibernate 的 Session ),成功之后,出現 hibernate.cfg.xml 配置工具。
接下來是配置 hibernate.cfg.xml 。數據庫連接選擇 JDBC 并使用 MySQL Connector/J Driver 創建一個 profile ,右邊參數里添加一個 show-sql 設為 true. 。配置文件如下:















??? 下一步是添加
Mapping(
數據庫表與
Java
實體類的映射
)
。打開
Database Explorer
視圖,建立一個數據庫連接,這里還是使用上面的
MySQL Connector/J Driver
,如果驅動沒設置好,相關的操作都不會成功。然后連接到數據庫上,展開
Tables
,右鍵某個表,選擇
生成映射
Generate hibernate mapping
;選擇實體類位置和
ID
生成器為“
sequence
”即可。將所有表的映射生成完畢,自動配置就結束了。這時
hibernate.cfg.xml
如下:










































??????< mapping? resource ="jjp/db/configs/Word.hbm.xml" ? />
??????< mapping? resource ="jjp/db/configs/Form.hbm.xml" ? />
????? < mapping? resource ="jjp/db/configs/Derivation.hbm.xml" ? />
????? < mapping? resource ="jjp/db/configs/RWordForm.hbm.xml" ? />
????? < mapping? resource ="jjp/db/configs/RWordDerivation.hbm.xml" ? />

</ hibernate-configuration >


實體類映射配置文件中以 Word.hbm.xml 為例:





















































??? 如果沒有特殊要求,
hibernate配置 方面的工作都結束了。下面介紹一下如何使用 hibernate 。使用 Session 工廠類 HibernateSessionFactory 的方法 currentSession() 取得一個 Session ,然后就可以通過 Session 對數據庫進行各種操作了。例如, JJp 中詞匯表類 Vocabulary 取得所有單詞的方法 getWords() 可以這樣寫:













?
其中 session.createQuery("from Word") 的 ”from Word” 是 HQL , HQL 使用方法請查看 hibernate 參考手冊。
在 HQL 方面有一個中文問題,下面代碼
????????????? Collection result = session.createQuery(
??????????????????????????? "from Word where chinese LIKE '%" + hiragana + "%'").list();
其中的 hiragana 在自動生成 SQL 語句的時候被轉換成亂碼,在網上查找,據說是 hibernate 版本的問題,但是網上的解決方法我沒有成功,現在用了一個替代方案。
上面是 JJp 中使用 hibernate 的簡要介紹。
現在
JJp
開發工具是
JDK
posted on 2006-03-13 22:59 北方蒼狼 閱讀(420) 評論(0) 編輯 收藏 所屬分類: JJpStudy