[摘 要] 電子商務近些年得到了快速發(fā)展,為了使電子商務平臺的開發(fā)更快捷,更安全,我們采用JSP、Hibernate等技術,構建了一個電子商務平臺。著重研究了基于Hibernate的電子商務平臺的總體結構和實現(xiàn)方法。
[關鍵詞] JAVA JSP Hibernate
一、Hibernate技術介紹
Java應用程序運行時,往往把數(shù)據封裝為相互連接的對象,但是當程序結束時,這些對象就會消失在一團邏輯中,所以需要有一些保存它們的方法。甚至在編寫應用程序之前,數(shù)據就已經存在了,所以需要有讀入它們和將其表示為對象的方法。手動編寫代碼來執(zhí)行這些任務不僅單調乏味、易于出錯,而且會占用整個應用程序的很大一部分開發(fā)工作量。
Hibernate是一個免費的開源Java包,它對JDBC做了輕量級封裝,不僅提供ORM映射服務,還提供數(shù)據查詢和數(shù)據緩存功能,Java開發(fā)人員可以方便地通過Hibernate API來操縱數(shù)據庫。它使得與關系數(shù)據庫打交道變得十分輕松,就像數(shù)據庫中包含每天使用的普通Java對象一樣;同時不必考慮如何把它們從數(shù)據庫表中取出(或放回到數(shù)據庫表中)。
現(xiàn)在,越來越多的Java開發(fā)人員把Hibernate作為企業(yè)級應用和關系數(shù)據庫之間的中間件,以節(jié)省和對象持久化有關的約30%的JDBC編程工作量。2005年,Hibernate作為優(yōu)秀的類庫和組件,榮獲了第15屆Jolt大獎。
二、層次結構設計
一般的Web應用程序中,通常采用三層體系結構,如圖1所示:
表述層:提供與用戶交互的界面。業(yè)務邏輯層:實現(xiàn)各種業(yè)務邏輯。數(shù)據庫層:負責存放和管理應用的持久性業(yè)務信息。但是,在上圖的三層軟件結構中,業(yè)務邏輯層不僅負責業(yè)務邏輯,而且直接訪問數(shù)據庫,提供對業(yè)務數(shù)據的保存、更新、刪除和查詢操作。
在本平臺中,借助于Hibernate框架,可以把數(shù)據訪問細節(jié)和業(yè)務邏輯分開,使整個系統(tǒng)呈現(xiàn)四層體系結構,這樣可以把數(shù)據訪問作為單獨的持久化層,而業(yè)務邏輯層用JavaBeans來實現(xiàn)。重新分層的軟件層次結構參見圖2:
其中,持久化層封裝了數(shù)據訪問細節(jié),圖2系統(tǒng)層次結構為業(yè)務邏輯層提供了面向對象的API。通過應用持久化層,可以達到以下目標:代碼可重用性高,能夠完成所有的數(shù)據庫訪問操作;如果需要的話,能夠支持多種數(shù)據庫平臺;具有相對獨立性,當持久化層的實現(xiàn)發(fā)生變化,不會影響上層的實現(xiàn)。
三、功能模塊設計
本平臺所實現(xiàn)的功能如下:
1.客戶界面部分
商品選購;購物車功能;查看商品詳細情況;用戶注冊;用戶登錄;查看用戶訂單信息。
2.管理界面部分
客戶管理:查看、刪除;現(xiàn)有商品管理:查看、修改、刪除;訂單管理:查看訂單付款,更新訂單付款,出貨狀態(tài),刪除訂單;添加新商品;添加商品分類。
四、關鍵技術分析
由于引入了Hibernate框架,本平臺中所有對數(shù)據庫的操作都是通過Hibernate提供的面向對象的API來完成的。
1.Hibernate的初始化
在自定義的HibernateUtil類中,由靜態(tài)代碼塊負責Hibernate的初始化工作,如讀取Hibernate的配置信息,以及對象——關系映射信息,最后創(chuàng)建SessionFactory實例。下面具體分析初始化的步驟:
(1)創(chuàng)建一個Configuration的實例,Configuration類的構造方法把默認文件路徑下的hibernate.properities配置文件中的配置信息讀入到內存。
(2)調用Configuration類的addClass()方法把默認文件路徑下的Category.hbm.xml,Customer.hbm.xml,Item.hbm.xml,Order.hbm.xml文件中的映射信息讀入內存中。
(3)調用Configuration類的buildSessionFactory()方法創(chuàng)建一個SessionFactory實例,并把Configuration對象包含的所有配置信息拷貝到SessionFactory對象的緩存中。SessionFactory代表一個數(shù)據庫存儲,當SessionFactory對象創(chuàng)建后,該對象便不和Configuration對象關聯(lián)。以后對數(shù)據庫的操作都基于此SessionFactory對象。
2.利用Hibernate操作數(shù)據庫
初始化過程結束后,就可以調用SessionFactory實例的openSession方法來獲得Session實例,然后通過它執(zhí)行訪問數(shù)據庫的操作。Session是一個輕量級對象。通常將每一個Session實例和一個數(shù)據庫事務綁定,也就是說,每執(zhí)行一個數(shù)據庫事務,都應該先創(chuàng)建一個新的Session實例。如果事務執(zhí)行中出現(xiàn)異常應該撤銷事務。不論事務成功與否都應該調用的Session的close()方法,從而釋放Session實例。
參考文獻:
[1]深入淺出Hibernate.北京:電子工業(yè)出版社,2005
[2]精通Hibernate:Java對象持久化技術詳解.北京:電子工業(yè)出版社,2005