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










































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






































到這里,我們可以運行Tomcat,Hibernate會根據hbm2ddl.auto自動地把實體類與屬性轉變成數據庫中的表與列。但這一步,要事先在數據庫中建立一個名為"ssh_annotation"的空數據庫。好了,看一下,你的數據庫中是否有"tb_user"的表生成了?!
接下來,我們來開發一個包裝器類,取名HibernateUtil,代碼如下:


























學過Hibernate的朋友們,應該對這個類不陌生吧。在此,我就不多解釋啦,注意一下我注釋的地方就行。下面,我們來進行測試,下載最新版本的Junit4.5.jar,試一下感覺如何。當然,舊版本的應該也沒問題的啦!寫測試代碼如下:




































































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