用eclipse+Hibernate Synchronizer(plugin)開發例子(原創)
最後更新:2017-02-28
來源:互聯網
上載者:User
原創
1. 開發環境準備
Eclipse3.0.1
下載:http://www.eclipse.org/
Eclipse Plugin:Hibernate Synchronizer
下載:http://sourceforge.net/project/showfiles.php?group_id=99370
Hibernate-2.1.8
下載:http://internap.dl.sourceforge.net/sourceforge/hibernate/hibernate-2.1.8.zip
MyS QL 4.1
下載:http://www.mysql.com
2.示範一個簡單例子
2.1在mysql資料庫中的test資料庫下建立表內容表Content,指令碼如下:
CREATE TABLE Content (
FID int(11) NOT NULL auto_increment,
FTitle varchar(100) NOT NULL default '',
FContent Text ,
PRIMARY KEY (FID)
);
2.2檢測Hibernate外掛程式是否安裝成功,進入菜單”window”下的”Preferences”,就有如下圖所示的:
2.3用eclipse建立一個JAVA項目,如下所示:
選“Next>”一直到完成。
有一點要注意的是,建立完項目後,還要將Hibernate庫及mysql驅動加入到項目的Libraries中。
2.4加入Hibernate設定檔“hibernate.cfg.xml”
選擇該項目,點右鍵,“New”à “Other”進入如下介面,
選擇“Hibernate Configuration File”à “Next”
選擇資料庫類型、Database URL、Username及Password,OK, 檔案“hibernate.cfg.xml”系統自動產生。
2.5加入“*.hbm”設定檔
同樣是,選擇該項目,點右鍵,“New”à “Other”進入,不過這次要選擇的是“Hibernate Mapping File”,點“Next”進入如下介面
注意,如果資料庫有密碼,則要先要輸入密碼再點“Refresh”按鈕,資料中的表就會顯示在Tables框中。選擇一個表,如content後,點“Finish”按鈕。
2.6根據content.hbm產生相關的JAVA代碼,選擇Content.hbm右鍵,操作如下介面:
2.7接一來簡單地增加幾行代碼就可以了,進入系統產生的包DAO中,如例子中的“com.hibernate.example.dao”,開啟檔案ContentDAO.java,代碼修改如下:
0: /*
1: * 建立日期 2004-12-10
2: * @author Oscar Lao
3: * CopyRight 2005 S.W.S
4: */
5:
6: package com.hibernate.example.dao;
7:
8: import org.apache.log4j.Logger;
9:
10: import com.hibernate.example.Content;
11: import com.hibernate.example.base.BaseContentDAO;
12:
13: /**
14: * @author Oscar Lao
15: * QQ:63065068
16: * Email:e-silver@163.com
17: * ClassDesc:Hibernate Example
18: **/
19: public class ContentDAO extends BaseContentDAO {
20: private static final Logger logger = Logger.getLogger(ContentDAO.class);
21:
22: public static void main(String[] args){
23: if (logger.isDebugEnabled()) {
24: logger.debug("程式正在運行...");
25: }
26:
27: try {
28: _RootDAO.initialize();
29:
30: ContentDAO cond = new ContentDAO();
31: Content cont = new Content();
32: for (int i = 1; i < 100; i++) {
33: cont.setFid(new Integer(i));
34: cont.setFTitle("Title"+i);
35: cont.setFContent("Content"+i);
36: cond.save(cont);
37: }
38: } catch (Exception e) {
39: logger.error("運行時出現異常...", e);
40: }
41:
42: if (logger.isDebugEnabled()) {
43: logger.debug("運行完畢。");
44: }
45: }
46: }
3.欣賞成果
如果所有的配置正確,ContentDAO類應該可以運行了,運行後,程式會向表Content插入100條記錄。祝你好運!!
4.在我測試時出現如下錯誤,現在也貼出來,希望對大家有所協助:
4.1如果運行時出現如下異常
Could not find UserTransaction in JNDI javax.naming.NoInitialContextException:…
解決:把設定檔“hibernate.cfg.xml”中的
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">
java:comp/UserTransaction
</property>
兩行設定JTA控制事務的屬性注釋掉就可以了,因為程式裡還未使用JTA控制事務。
4.2 如果運行時出現如下異常
Error parsing XML: /hibernate.cfg.xml(33) The content of element type "session-factory" is incomplete, it must match "(property*,mapping+,(class-cache|collection-cache|jcs-class-cache|jcs-collection-cache)*)".
解決:在設定檔“hibernate.cfg.xml”中的<session-factory>與</session-factory>之間加
<mapping resource="Content.hbm" />
第一次寫關於Hibernate的文章,如有不對的地方,請批評指正。
最後,祝大家成功!!^_^