寫(xiě)這個(gè)主題的文章在網(wǎng)絡(luò)上應(yīng)該暫時(shí)沒(méi)有吧,也看過(guò)許多SSH整合開(kāi)發(fā)的書(shū),許多都是舊版本的框架整合,而且大部分都是以XML配置文件的方式,即使談到Annotation也是針對(duì)其中一個(gè)框架而言的。隨著開(kāi)源框架更新版本中不斷引進(jìn)對(duì)Annotation的支持,使得我們可以用單方面去管理我們的類(lèi)與關(guān)系,而不用像以往那樣,一旦遇到問(wèn)題,就要不斷在Java視圖和XML視圖中切換。好,開(kāi)始吧,既然網(wǎng)絡(luò)中暫時(shí)沒(méi)有這方面的文章,我就來(lái)開(kāi)創(chuàng)個(gè)先例。自己探索學(xué)習(xí)一下,也讓大家來(lái)學(xué)習(xí)和提出批評(píng)和建議。
首選說(shuō)一下我們的開(kāi)發(fā)準(zhǔn)備吧!
開(kāi)發(fā)環(huán)境:Tomcat 6.0,JDK1.6,MySQL5.0
開(kāi)發(fā)工具:Eclipse-jee(Eclipse的官網(wǎng)上下載)
所要下載的框架包:struts-2.0.11.2-all.zip,spring-framework-2.5.5-with-dependencies.zip,hibernate-distribution-3.3.1.GA-dist.zip,這三個(gè)壓縮包在其官方網(wǎng)站都可以下載。當(dāng)然,這個(gè)小項(xiàng)目所要用到不止這些,我們用到的時(shí)候再去下載。
好,我們來(lái)開(kāi)始第一階段的探索——Hibernate3.3的Annotation的實(shí)現(xiàn)。
新建我們的Dynamic Web Project,取名為"ssh_annotation”,配置Tomcat6.0的支持,打開(kāi)MySQL,建立一個(gè)空數(shù)據(jù)庫(kù),取名為"ssh_annotation"。記得,要引進(jìn)MySQL的JDBC驅(qū)動(dòng)包mysql-connector-java-5.0.8-bin.jar。
在解壓縮的hibernate-distribution-3.3.1.GA目錄中,把hibernate.jar,和\lib\required\下的所用jar包引進(jìn)到我們項(xiàng)目的lib目錄下。
不知道用過(guò)Hibernate3.3開(kāi)發(fā)的朋友會(huì)不會(huì)遇到過(guò)這樣的問(wèn)題:把上面的包都準(zhǔn)備好的,開(kāi)發(fā)Hibernate測(cè)試類(lèi)時(shí),會(huì)報(bào)Caused by: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder 或者Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager的錯(cuò)誤。這是因?yàn)镠ibernate3.3提供的jar包,缺少了slf4j-log4j12.jar這個(gè)包。解決辦法是:在Hibernate的官方網(wǎng)站上下載hibernate-annotations-3.4.0.GA.zip,解壓縮,把其\lib\下的slf4j-log4j12.jar引進(jìn)我們項(xiàng)目的lib目錄下。而我們引進(jìn)這個(gè)jar包后,若我們沒(méi)有引進(jìn)log4j.jar的話,就會(huì)報(bào)java.lang.NoClassDefFoundError: org/apache/log4j/LogManager的錯(cuò)誤,可能是slf4j-log4j12.jar要用調(diào)用log4j的類(lèi)吧。我們也引進(jìn)log4j.jar即行。
好,第一步,來(lái)開(kāi)發(fā)我們的實(shí)體類(lèi)User。代碼如下:










































@Entity定義User類(lèi)為實(shí)體類(lèi),@Id定義該屬性對(duì)應(yīng)的列為主鍵,@GeneratedValue(strategy=GenerationType.IDENTITY)定義主鍵生成策略為Indentity,適用于MySQL和MS SQL等數(shù)據(jù)庫(kù)。@Column(name="username", length=15)定義列名和取值長(zhǎng)度。
應(yīng)該不難的,更多有關(guān)Hibernate的注解,請(qǐng)下載并參考我整理的Hibernate Annotation幫助文檔 /Files/rongxh7/hibernateAannotations.rar 。慢慢學(xué)吧!
當(dāng)然,必要的XML配置文件還是要有的:






































到這里,我們可以運(yùn)行Tomcat,Hibernate會(huì)根據(jù)hbm2ddl.auto自動(dòng)地把實(shí)體類(lèi)與屬性轉(zhuǎn)變成數(shù)據(jù)庫(kù)中的表與列。但這一步,要事先在數(shù)據(jù)庫(kù)中建立一個(gè)名為"ssh_annotation"的空數(shù)據(jù)庫(kù)。好了,看一下,你的數(shù)據(jù)庫(kù)中是否有"tb_user"的表生成了?!
接下來(lái),我們來(lái)開(kāi)發(fā)一個(gè)包裝器類(lèi),取名HibernateUtil,代碼如下:


























學(xué)過(guò)Hibernate的朋友們,應(yīng)該對(duì)這個(gè)類(lèi)不陌生吧。在此,我就不多解釋啦,注意一下我注釋的地方就行。下面,我們來(lái)進(jìn)行測(cè)試,下載最新版本的Junit4.5.jar,試一下感覺(jué)如何。當(dāng)然,舊版本的應(yīng)該也沒(méi)問(wèn)題的啦!寫(xiě)測(cè)試代碼如下:




































































到此,我們的Hibernate Annotation開(kāi)發(fā)完成了。你成功了沒(méi)?如果有什么問(wèn)題,請(qǐng)回復(fù),我盡力為你解答!好,第一階段暫告一段落。不要忘記,我們是要做的是基于Annotatioln的SSH整合開(kāi)發(fā),讓我們一起期待下一階段吧!
(*^-^*) 本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處, http://www.aygfsteel.com/rongxh7謝謝! (*^-^*)
本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!http://www.aygfsteel.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)