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