Hibernate是什么,有多少好處,想必查找這類博文的都知道,所以就不多說了。下面是我對Hibernate簡單使用的一個(gè)小小的總結(jié)。與君(主要是剛?cè)腴T的)共勉吧!
10多年的湯旺網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整湯旺建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“湯旺網(wǎng)站設(shè)計(jì)”,“湯旺網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
這里僅僅是將上面提到的那些必須的jar包進(jìn)行相關(guān)的路徑的配置。我這里是將Hibernate基礎(chǔ)項(xiàng)目所需的jar包建立了一個(gè)自己的userlibrary。這樣方便以后自己隨意的導(dǎo)入。但是應(yīng)該注意的是今后那些以來的文件的文職千萬不要隨意的變動(dòng)了,否則可能會(huì)使得eclipse找不到。還有Mysql的JDBC的jar千萬不要忘記了。另外Junit作為一個(gè)調(diào)試的使用也是必不可少的。
步驟一:當(dāng)Hibernate-tools 沒有自動(dòng)生成配置文件必須的dtd文檔的時(shí)候,我們需要手動(dòng)的進(jìn)行添加。比如
hibernate-release-4.2.4.Final\project\hibernate-core\src\main\resources\org\hibernate\hibernate-mapping-3.0.dtd
在項(xiàng)目的src目錄上點(diǎn)擊鼠標(biāo)右鍵,然后使用hibernate插件,點(diǎn)擊Hibernate Configuration File(cfg.xml)即可。選擇默認(rèn)的就可以了。
步驟二:創(chuàng)建Hibernate的配置文件:
只要是連接過MySQL數(shù)據(jù)庫,都是知道這些個(gè)字段的含義的,不再過多的敘述咯。
root mysql com.mysql.jdbc.Driver jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8 org.hibernate.dialect.MySQLDialect
舉個(gè)簡單的小例子咯。如下:
import java.util.Date; /** * 學(xué)生類,設(shè)計(jì)原則要遵循javaBean的設(shè)計(jì)原則 * * 1、共有的類 2、屬性私有 3、屬性使用setter和getter封裝 4、提供龔鷗的不帶參數(shù)的默認(rèn)的構(gòu)造方法 * * @author Administrator * */ public class Students { private String sname; private int sid; private Date birthday; private String gender; private String adress; public Students() { } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getAdress() { return adress; } public void setAdress(String adress) { this.adress = adress; } public Students(String sname, int sid, Date birthday, String gender, String adress) { this.sname = sname; this.sid = sid; this.birthday = birthday; this.gender = gender; this.adress = adress; } @Override public String toString() { return "Students [sname=" + sname + ", sid=" + sid + ", birthday=" + birthday + ", gender=" + gender + ", adress=" + adress + "]"; } }
同樣使用插件幫助我們生成。在src目錄下點(diǎn)擊右鍵,new--others--hibernate,選擇Hibernate XML Mapping file(hbm.xml)文件,找到我們要進(jìn)行映射的學(xué)生類,然后選擇默認(rèn)的即可。
然后在剛才創(chuàng)建的hibernate.cfg.xml文件中添加一個(gè)mapping標(biāo)簽即可。如下
這里我使用Navacat軟件新建了一個(gè)字符集為UTF-8的數(shù)據(jù)庫。名稱為hibernate.
- 使用Junit進(jìn)行測試:
- @Test注解:表明這是一個(gè)測試方法,一般為void的無參的throws異常的方法。
- @Before注解:表明這是一個(gè)初始化方法,用于初始化一些信息。
- @After注解:表明這是一個(gè)釋放資源的方法,用于收尾的工作。
點(diǎn)擊項(xiàng)目名,右鍵選擇創(chuàng)建一個(gè)source folder.作為我們的測試所用。我的為test。然后新建一個(gè)測試類就可以了。這里我們需要測試的是我們的Students類,所以創(chuàng)建了一個(gè)StudentsTest就行。
可見為如下代碼:
import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; public class StudentsTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { // 創(chuàng)建配置對象 Configuration config = new Configuration().configure(); // 創(chuàng)建服務(wù)注冊對象 ServiceRegistry serviceRegister = new ServiceRegistryBuilder().applySettings(config.getProperties()) .buildServiceRegistry(); // 創(chuàng)建會(huì)化工廠對象 sessionFactory = config.buildSessionFactory(serviceRegister); // 會(huì)話對象 session = sessionFactory.openSession(); // 開啟事務(wù) transaction = session.beginTransaction(); } @Test public void testSaveStudents() { Students s = new Students(1, "張三", "男", new Date(), "DLUT"); // 保存對象進(jìn)入數(shù)據(jù)庫 session.save(s); } @After public void destory() { // 先提交事務(wù) transaction.commit(); session.close(); sessionFactory.close(); } }
我最后在測試方法上點(diǎn)擊了一下,發(fā)現(xiàn)報(bào)錯(cuò)了。是org.hibernate.MappingException: Unknown Entity:Students。
然后我就看了看hibernate.cfg.xml文件,發(fā)現(xiàn)數(shù)據(jù)庫的一切都是正確的啊。也沒錯(cuò)。
就想不明白了,然后查了查網(wǎng)上的相似的錯(cuò)誤。也沒有發(fā)現(xiàn)正確的解決辦法,最后靈光一閃,肯定是映射文件出錯(cuò)了。那么到底是哪個(gè)呢,就一個(gè)一個(gè)的排查吧。然后我就找到了錯(cuò)誤的根源了,不是Student.hbm.xml的錯(cuò)誤,而是hibernate.cfg.xml中忘記了添加mapping的標(biāo)簽。哈哈。這次,又運(yùn)行了一下,成功了。
效果圖如下:
本文適合剛?cè)腴T的Hibernate童鞋,所以并沒有一些很復(fù)雜的配置啊,和其他額外的處理啊什么的。就是為了簡單。
這里面使用到了Hibernate-tools插件,幫助我們干了不少活。省事也省心了。個(gè)人建議安裝JBoss的這款,包含了不少的東西呢。
以上就是本文關(guān)于Hibernate初體驗(yàn)及簡單錯(cuò)誤排除代碼詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!