• <menu id="w2i4a"></menu>
  • logo MyEclipse數(shù)據(jù)庫(kù)教程

    文檔首頁(yè)>>MyEclipse數(shù)據(jù)庫(kù)教程>>MyEclipse數(shù)據(jù)庫(kù)教程:使用Hibernate和Spring執(zhí)行數(shù)據(jù)庫(kù)操作(一)

    MyEclipse數(shù)據(jù)庫(kù)教程:使用Hibernate和Spring執(zhí)行數(shù)據(jù)庫(kù)操作(一)


    在本教程中,您將學(xué)習(xí)如何:

    • 連接到數(shù)據(jù)庫(kù)

    • 將Hibernate和Spring添加到項(xiàng)目中

    • 通過(guò)對(duì)數(shù)據(jù)庫(kù)表進(jìn)行逆向工程來(lái)生成實(shí)體

    • 創(chuàng)建Spring Beans作為持久層和數(shù)據(jù)源

    • 啟用Hibernate 3.x注釋支持

    下載MyEclipse  購(gòu)買(mǎi)MyEclipse

    1、設(shè)置樣本數(shù)據(jù)庫(kù)

    本教程中的示例使用了一個(gè)帶有用戶表和數(shù)據(jù)的MySQL 5實(shí)例,用到了以下文件準(zhǔn)備樣本數(shù)據(jù)。在開(kāi)始本教程之前,您必須建立一個(gè)數(shù)據(jù)庫(kù)。

    2、連接到數(shù)據(jù)庫(kù)

    • 單擊打開(kāi)Database Explorer圖標(biāo) ,選擇MyEclipse數(shù)據(jù)庫(kù)瀏覽器。

    • 在數(shù)據(jù)庫(kù)瀏覽器中,單擊,然后選擇新建。

    • 從“Driver Template”下拉菜單中選擇“MySQL Connector/J”,在“Driver name field”字段中鍵入MySQL Connector/J,將

    • 單擊添加JAR。導(dǎo)航到MySQL Connector/J JAR文件的位置,然后選擇文件?!癉river classname field”將自動(dòng)填充,然后點(diǎn)擊Finish。

    • 在DB Explorer中選擇MySQL Connector/J,然后單擊 打開(kāi)鏈接。

    3、創(chuàng)建一個(gè)啟用了Hibernate的項(xiàng)目

    您可以為任何受支持的基礎(chǔ)項(xiàng)目(通常是Java或Web)啟用Hibernate和Spring。

    • 選擇File>New>Project,展開(kāi)Java,選擇Java項(xiàng)目,然后單擊下一步。

    • 在“Project name”字段中輸入HibernateSpringProject,然后單擊“完成”。系統(tǒng)將提示您切換到Java透視圖。選擇“Yes”。

    • 右鍵單擊該項(xiàng)目,選擇 Configure Facets > Install Hibernate Facet。注意,這里需要選擇4.1作為Hibernate規(guī)范版本。

    • 點(diǎn)擊下一步。MyEclipse將創(chuàng)建一個(gè)新的hibernate.cfg.xml文件。

    • 單擊Java package字段旁邊的New為session factory class創(chuàng)建一個(gè)新的軟件包,并命名為com.myeclipse.hibernatespring,然后單擊“完成”。

    • 單擊下一步,從數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序下拉列表中選擇MySQL Connector/J,輸入密碼,然后單擊完成。

    現(xiàn)在,該項(xiàng)目包含所有Hibernate和JDBC庫(kù),并且hibernate.cfg.xml文件在“Configuration”編輯器中打開(kāi)。配置文件包含來(lái)自連接配置文件的連接信息。當(dāng)您對(duì)數(shù)據(jù)庫(kù)表進(jìn)行反向工程時(shí),實(shí)體將出現(xiàn)在配置文件的Mappings部分。

    hibernate_caps_and_config_file2.png

    4、將Spring Facet添加到項(xiàng)目中

    對(duì)于小型應(yīng)用程序來(lái)說(shuō),Spring并不太適用,但是當(dāng)您看到使用Spring通過(guò)簡(jiǎn)單地調(diào)整bean配置文件中的引用來(lái)交換代碼庫(kù)的整個(gè)部分有多么容易時(shí),您就會(huì)意識(shí)到該工具的功能真的很強(qiáng)大。最明顯的是,使用Spring來(lái)測(cè)試將會(huì)簡(jiǎn)單很多。例如,您可以交換一個(gè)持久性實(shí)現(xiàn),該實(shí)現(xiàn)將其所有調(diào)用都發(fā)送給嵌入式DBMS,或者記錄其所有活動(dòng)。然后,當(dāng)應(yīng)用程序部署到生產(chǎn)環(huán)境中時(shí),將持久性實(shí)現(xiàn)切換回使用主DBMS的代碼,這些代碼不使用日志記錄就能提高性能。

    • 右鍵單擊該項(xiàng)目,然后選擇 Configure Facets > Install Spring Facet

    • 接受默認(rèn)的Spring版本和目標(biāo)運(yùn)行時(shí),然后單擊Next。

    • MyEclipse將創(chuàng)建一個(gè)新的applicationContext.xml文件。點(diǎn)擊完成。

    現(xiàn)在,這個(gè)項(xiàng)目就同時(shí)具有Hibernate和Spring功能。

    5、逆向工程數(shù)據(jù)庫(kù)表

    對(duì)數(shù)據(jù)庫(kù)表進(jìn)行反向工程時(shí),會(huì)在項(xiàng)目中生成Hibernate(Java)對(duì)象。由于該項(xiàng)目是Hibernate-Spring項(xiàng)目,所以MyEclipse在逆向工程期間提供的不僅僅是普通DAO,而是Spring DAO選項(xiàng)。這就意味著系統(tǒng)將自動(dòng)創(chuàng)建DAO Spring bean,這些bean的sessionFactory屬性已經(jīng)正確配置為對(duì)Hibernate SessionFactory的現(xiàn)有Spring引用。接下來(lái),我們將通過(guò)幾個(gè)步驟使用簡(jiǎn)單的逆向工程形式,讓向?qū)Й@取所有默認(rèn)值。但是,為了實(shí)現(xiàn)最大程度的控制,您可以使用“Nxt”按鈕,通過(guò)向?qū)б徊揭徊降貫g覽詳細(xì)信息,比如主鍵生成策略、對(duì)象名稱(chēng)、類(lèi)型等。

    • 切換回?cái)?shù)據(jù)庫(kù)瀏覽器透視圖。

    • 在數(shù)據(jù)庫(kù)瀏覽器中,將MySQL Connector/J擴(kuò)展到用戶表。

    • 右鍵單擊用戶表,然后選擇“Hibernate Reverse Engineering”。

    • 單擊Java src文件夾旁邊的瀏覽,展開(kāi) HibernateSpringProject > src,選擇com.myeclipse.hibernatespring,然后單擊確定。

    • 選擇 Create POJO <> DB 表映射信息復(fù)選框,選擇Java數(shù)據(jù)對(duì)象復(fù)選框,再選擇Java數(shù)據(jù)訪問(wèn)對(duì)象(DAO)復(fù)選框,然后單擊完成。您將收到系統(tǒng)關(guān)于切換到Hibernate透視圖的提示,只需要單擊“Yes”即可。

    • 將Hibernate類(lèi)生成到Java包中,并創(chuàng)建Spring Bean。

    6、編寫(xiě) Hibernate-Spring 代碼

    設(shè)置好項(xiàng)目后,就可以開(kāi)始編寫(xiě)代碼了。本過(guò)程需要兩段代碼:

    • 業(yè)務(wù)邏輯:表示應(yīng)用程序代碼的主要方法。

    • 持久層:這是業(yè)務(wù)邏輯應(yīng)用于數(shù)據(jù)庫(kù)功能的應(yīng)用程序的抽象部分。如果使用的所有業(yè)務(wù)邏輯都是持久性層,那么您可以在這一層后面隱藏它工作的一些細(xì)節(jié)。本例使用Spring將執(zhí)行數(shù)據(jù)庫(kù)操作所需的必要DAO引用填充到持久層,這樣做的好處是業(yè)務(wù)邏輯不需要了解任何相關(guān)信息。

    將每個(gè)名為BusinessLogic.java和PersistenceLayer.java的類(lèi)添加到com.myeclipse.hibernatespring包。從持久性層開(kāi)始,因?yàn)樗挥趧倓偵傻乃写a和在業(yè)務(wù)邏輯層中編寫(xiě)的代碼之間。它是持久化技術(shù)(Hibernate)和由Spring管理的業(yè)務(wù)邏輯(main方法)之間的抽象。將以下代碼添加到PersistenceLayer類(lèi),這個(gè)類(lèi)的目的是獲得一個(gè)由Spring注入的UserDAO實(shí)例,然后使用該引用來(lái)實(shí)現(xiàn)save/find/update和delete操作(不需要調(diào)用代碼的)。這使您不用完全更改應(yīng)用程序的代碼就能輕松、快速地修改應(yīng)用程序中的持久性代碼。更具體地說(shuō),如果您想更改PersistenceLayer的實(shí)現(xiàn)方式,比如說(shuō)要更好地管理異常、事務(wù)或其他任何事情,可以通過(guò)編輯此類(lèi)來(lái)完成。只要所有方法標(biāo)簽保持不變,就不需要重構(gòu)整個(gè)應(yīng)用程序。

    package com.myeclipse.hibernatespring; 
     
             public class PersistenceLayer { 
                   private UserDAO userDAO; 
                   public UserDAO getUserDAO() { 
                       return userDAO; 
                   } 
     
                   public void setUserDAO(UserDAO userDAO) { 
                       this.userDAO = userDAO; 
                   } 
                
                   public void addUser(User user) { 
                       userDAO.save(user); 
                   } 
               
                   public User findUserById(Integer id) { 
                       return
                       userDAO.findById(id); 
                   } 
                
                   public void updateUser(User user) { 
                       userDAO.merge(user); 
                   } 
     
                   public void deleteUser(User user) { 
                       userDAO.delete(user); 
                   } 
    }

    另外,由于此抽象層與應(yīng)用程序代碼中的持久性代碼是松散地耦合的,可以輕松的使用Spring注入一個(gè)測(cè)試UserDAO實(shí)現(xiàn)。例如,該實(shí)現(xiàn)模擬數(shù)據(jù)庫(kù)操作,但實(shí)際上并不執(zhí)行這些操作?,F(xiàn)在您已經(jīng)實(shí)現(xiàn)了PersistenceLayer,接下來(lái)將以下業(yè)務(wù)邏輯(或主要方法實(shí)現(xiàn))代碼添加到BusinessLogic類(lèi)。業(yè)務(wù)邏輯(主要方法)利用抽象的持久層來(lái)添加/查找/更新以及從數(shù)據(jù)庫(kù)中刪除用戶。

    package com.myeclipse.hibernatespring; 
    import org.springframework.context.ApplicationContext;
     
    import org.springframework.context.support.ClassPathXmlApplicationContext;
     
     public class BusinessLogic { 
     
          public static void main(String[] args) { 
     
              /* 1. Create a new user */ 
              Integer id = new Integer(1); 
              User user = new User(); 
              user.setId(id);        
              user.setUsername("jdoe");         
              user.setPassword("1234"); 
              user.setFirstName("John"); 
              user.setLastName("Doe"); 
              user.setDateCreated(Long.valueOf(System.currentTimeMillis())); 
     
              /* 2. Load the Spring bean configuration and create a bean factory */ 
              ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
     
              /* 3. Create instance of PersistenceLayer */ 
              PersistenceLayer persistenceLayer = (PersistenceLayer) ctx.getBean("persistenceLayer");
     
              /* 4. Save the new user to the database */         
              persistenceLayer.addUser(user); 
     
              /* 5. Confirm that our user was saved */ 
              User userLoadedFromDB = persistenceLayer.findUserById(id);
               System.out.println("User Loaded from DB [username=" 
                    + userLoadedFromDB.getUsername() + ", password=" 
                        + userLoadedFromDB.getPassword() + ", firstName=" 
                    + userLoadedFromDB.getFirstName() + ", lastName="  
                      + userLoadedFromDB.getLastName() + "]"); 
     
              /* 6. Update the user */         
              userLoadedFromDB.setFirstName("Johnathan");         
              persistenceLayer.updateUser(userLoadedFromDB); 
     
              /* 7. Confirm that the update worked */ 
              User userLoadedFromDBAgain = persistenceLayer              
                    .findUserById(id);         
              System.out.println("User Loaded from DB Again [firstName="  
     + userLoadedFromDBAgain.getFirstName() + "]"); 
     
              /* 8. Delete the user */         
               persistenceLayer.deleteUser(user); 
          } 
    }

    這個(gè)代碼具有以下功能:

    • 創(chuàng)建一個(gè)新用戶來(lái)插入數(shù)據(jù)庫(kù)。它使用MyEclipse在從數(shù)據(jù)庫(kù)逆向工程用戶表時(shí)生成的用戶POJO。

    • 創(chuàng)建一個(gè)bean工廠。它的作用是讀入Spring bean配置文件,然后向“工廠”提供一個(gè)實(shí)例,該“工廠”可用于根據(jù)該文件中的規(guī)范獲取bean的實(shí)例。這是Spring的“入口點(diǎn)”。

    • 創(chuàng)建PersistenceLayer實(shí)例,這樣就可以執(zhí)行數(shù)據(jù)庫(kù)操作了!注意,為了正確填充UserDAO引用,您必須使用bean工廠來(lái)獲取實(shí)例。

    • 使用創(chuàng)建的PersistenceLayer實(shí)例將新用戶保存到數(shù)據(jù)庫(kù)。注意,由于所有調(diào)用都通過(guò)PersistenceLayer進(jìn)行,因此BusinessLogic類(lèi)不了解UserDAO類(lèi)或任何底層詳細(xì)信息。

    • 在保存時(shí),分配給用戶的ID將從數(shù)據(jù)庫(kù)中重新加載用戶,通過(guò)這樣的方式來(lái)檢查并確保所有值都是正確的。

    • 更新用戶名查看更新記錄是否有效。

    • 重新從數(shù)據(jù)庫(kù)加載用戶,以確保修改的地方已完全更新。

    • 從數(shù)據(jù)庫(kù)中刪除用戶。

    更多“使用Hibernate和Spring執(zhí)行數(shù)據(jù)庫(kù)操作”的教程內(nèi)容,請(qǐng)點(diǎn)擊此處查看>>>



    想進(jìn)一步了解MyEclips?【MyEclipse官方中文網(wǎng)】知你所需,解你所惑!

    想與更多人聊MyEclips?加入MyEclipse中國(guó)(官方2):742336981暢所欲言吧!

    想及時(shí)獲取MyEclips資訊?掃描下方二維碼,MyEclips信息跟你走!

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();