Hibernate学习——建立一个简单的Hibernate项目
最近老師讓做個web小應(yīng)用,大三的時候?qū)W習(xí)過一點(diǎn)J2EE的東西,也做過一些web相關(guān)的XXX管理系統(tǒng),都是用servlet,jsp這些完成的,雖然勉強(qiáng)能夠完成任務(wù),但其中各種代碼摻雜在一起,不好看而且維護(hù)起來也很麻煩,出了一點(diǎn)問題要調(diào)試好久才能解決。這次打算讓自己多學(xué)一點(diǎn)東西,在項(xiàng)目的架構(gòu)上我使用了struts2實(shí)現(xiàn)了多層代碼的分離,在數(shù)據(jù)庫方面,因?yàn)橐酝慕?jīng)歷都需要對連接數(shù)據(jù)庫進(jìn)行一個封裝,里面包含有數(shù)據(jù)庫的連接,記錄的添加,查詢,修改和刪除等操作,每次使用的過程中都需要先實(shí)現(xiàn)一個連接對象然后再進(jìn)行數(shù)據(jù)庫的操作,而面向?qū)ο缶幊讨袑τ诓煌瑢ο?#xff0c;傳統(tǒng)的數(shù)據(jù)庫操作只能夠完成一個泛化的任務(wù),不同的對象需要不同的處理方式,所以我們需要一個使用面向?qū)ο笏枷朊枋鰯?shù)據(jù)庫的一個框架來完成這樣的任務(wù),通過度娘就找到了Hibernate。
那么在這里我將記錄下我學(xué)習(xí)Hibernate框架的過程,以免用過之后又給忘記了。。。
今天我將完成環(huán)境的配置以及建立一個簡單的Hibernate的工程,使用的開發(fā)工具為myeclipse10,數(shù)據(jù)庫為mysql。
在此之前我們要做一些必要的準(zhǔn)備:java jdk還有mysql的問題我就不說了,這里只涉及項(xiàng)目配置以及必要代碼的編寫,我們要先下載Hibernate的jar包,解壓后找到這幾個文件:hibernate-annotations.jar,hibernate-commons-annotations.jar,hibernate-entitymanager.jar,hibernate-validator.jar,hibernate3.jar。
打開myeclipse后建立一個web項(xiàng)目,將上述的Jar包導(dǎo)入到項(xiàng)目中,這里我自己建立一個數(shù)據(jù)庫lan,里面有一個表叫user,其中包括U_ID,U_NAME,U_PASSWORD三個,我們的任務(wù)就是在程序中實(shí)現(xiàn)一個User類,完成User類與數(shù)據(jù)庫中user表的映射,并向表中添加一個記錄。
一個hibernate的項(xiàng)目有必不可少的兩個文件,一個是hibernate.cfg.xml,用于完成項(xiàng)目與數(shù)據(jù)庫的映射。另一個是xxx.hbm.xml,即表與類對象映射的文件,實(shí)現(xiàn)類屬性與表中屬性的映射。
首先要完成項(xiàng)目與數(shù)據(jù)庫的映射關(guān)系,在這里需要寫一個配置文件來完成,命名為hibernate.cfg.xml,路徑放在src根目錄就好。
1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 6 <!-- Generated by MyEclipse Hibernate Tools. --> 7 <hibernate-configuration> 8 9 <session-factory> 10 <property name="dialect"> 11 org.hibernate.dialect.MySQLDialect 12 </property> 13 <property name="hibernate.connection.url"><!-- 填寫數(shù)據(jù)庫路徑 --> 14 jdbc:mysql://127.0.0.1:3306/lan 15 </property> 16 <property name="connection.username">root</property><!-- 填寫數(shù)據(jù)庫用戶名 --> 17 <property name="connection.password">root</property><!-- 填寫數(shù)據(jù)庫密碼 --> 18 <property name="connection.driver_class"><!-- 填寫數(shù)據(jù)庫驅(qū)動 --> 19 com.mysql.jdbc.Driver 20 </property> 21 <property name="myeclipse.connection.profile">lan</property> 22 <mapping resource="./User.hbm.xml" /><!-- 表映射文件--> 23 24 </session-factory> 25 26 </hibernate-configuration>?
其中的表映射文件我們下面說。
然后寫一個User類(注意我們的模型類和表內(nèi)容必須是一一對應(yīng)的,即屬性之間是一一對應(yīng)的關(guān)系):
1 class User{ 2 private int id; 3 private String name; 4 private String password; 5 6 public void setId(int id){ 7 this.id = id; 8 } 9 public void setName(String name){ 10 this.name = name; 11 } 12 public void setPassword(String password){ 13 this.password = password; 14 } 15 16 public int getId(){ 17 return id; 18 } 19 public String getName(){ 20 return name; 21 } 22 public String getPassword(){ 23 return password; 24 } 25 }?
其中的數(shù)據(jù)成員分別對應(yīng)數(shù)據(jù)庫user表中的三個元素:U_ID,U_NAME,U_PASSWORD。
有了user類,我們下一步就是要實(shí)現(xiàn)數(shù)據(jù)庫表user與程序中的模型類User的映射關(guān)系了,此時我們需要一個表映射文件:XXX.hbm.xml(本文我們將其命名為user.hbm.xml)
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- 5 Mapping file autogenerated by MyEclipse Persistence Tools 6 --> 7 <hibernate-mapping> 8 <class name="model.User" table="user" catalog="lan"> 9 <id name="id" type="int"> 10 <column name="U_ID" length="11" /> 11 <generator class="assigned"></generator> 12 </id> 13 <property name="name" type="string"> 14 <column name="U_NAME" length="20" not-null="true" /> 15 </property> 16 <property name="password" type="string"> 17 <column name="U_PASSWORD" length="20" not-null="true" /> 18 </property> 19 </class> 20 </hibernate-mapping>?
其中class name選項(xiàng)是項(xiàng)目中數(shù)據(jù)庫表對應(yīng)的類路徑,table選項(xiàng)為表名,catalog為數(shù)據(jù)庫名。
完成了上述的準(zhǔn)備過程,我們下面就要嘗試對項(xiàng)目進(jìn)行測試了,我們向數(shù)據(jù)庫中添加一個的記錄的代碼如下:
1 User user; //定義一個model 2 user.setId(1); //設(shè)置user的屬性值 3 user.setName("name"); 4 user.setPassword("password"); 5 Session session; 6 // 找到Hibernate配置 7 Configuration config=new Configuration().configure(); 8 //從配置中取出SessionFactory 9 SessionFactory factory=config.buildSessionFactory(); 10 //從SessionFactory中取出一個Session 11 session=factory.openSession(); 12 Transaction tran=session.beginTransaction(); 13 //執(zhí)行語句 14 this.session.save(user); 15 //提交事務(wù) 16 tran.commit();//以上的語句實(shí)現(xiàn)了向數(shù)據(jù)庫中添加一條記錄的效果,第一次寫思維有點(diǎn)混亂。。。
轉(zhuǎn)載于:https://www.cnblogs.com/mickeygao/p/3947066.html
總結(jié)
以上是生活随笔為你收集整理的Hibernate学习——建立一个简单的Hibernate项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle数据库案例整理-Oracle
- 下一篇: Lua 学习笔记(一)