簡析J2EE程序的數據庫類設計模式
本文主要介紹一種數據庫相關類的設計模式。并介紹在J2EE框架中的具體實現,以及在事務處理方面的一些考慮。
一、設計模式簡介
在開發J2EE應用程序時,通常是要找出應用程序中涉及到的各種信息,比如一個公司的產品目錄,或一個網站的用戶信息,我們會將這些信息放在數據庫里。
在通常的設計中,我們要分析這些數據的屬性和關系,然后進行數據庫的邏輯設計,把各種信息用不同的表來存儲。比如,要開發一個圖書信息查詢系統。可以創建下面兩個表來分別表示書和出版社。
table Book (ID, Name, ISBN, Author, PublisherID, Price, Volume)
table Publisher (ID, Name, Telephone, Address, Postcode)
表Book包含了ID,書名,書號,作者,出版社ID,價格,頁數。表Publisher包含ID,社名,電話,地址,郵編。這兩個表通過出版社ID相關。
下面我們來介紹一種數據庫相關類的設計的模式。
數據庫相關類可以分成實體類(Entity Class)和會話類(Session Class)。
實體類對應于一個表的記錄的封裝,也就是該類的一個實例對應于表中的一個記錄。而且,該類中的屬性和記錄中的字段是一一對應的。
會話類對應于對一個表中的所有記錄的操作。比如增加一條記錄,刪除一條記錄,查找記錄和更新一條記錄。
通過使用這種設計模式,使程序更加模塊化,便于開發和維護。當然,也可以使用其他設計模式。
二、程序實現
在具體實現上面的這種模式時,往往根據具體的應用程序來選用不同的技術來實現。看到上面的描述模式后,我們很容易就發現,可以用EJB來實現(EJB分兩種,實體EJB和會話EJB)。
我們知道,EJB提出來的目的是用于提供一種分布式組件系統的開發。如果我們的應用程序是一個分布式的應用系統,那么毫無疑問,使用EJB來實現能大大減輕編程的工作量。同時,通過使用EJB容器的一些高級特性,可以使應用程序更加可靠,擴展性也大大加強。這樣一來,開發人員就不必關心一些底層技術,比如事務處理,安全等各個方面,而是把重點放在怎樣實現業務邏輯上。但是我們應該注意,如果開發的應用不是分布式的情況下,那么采用EJB有可能大大降低系統的性能。因為,EJB調用的開銷很大。
本文將探討在不利用EJB技術的情況下如何來實現上面介紹的這個模式。
一、設計模式簡介
在開發J2EE應用程序時,通常是要找出應用程序中涉及到的各種信息,比如一個公司的產品目錄,或一個網站的用戶信息,我們會將這些信息放在數據庫里。
在通常的設計中,我們要分析這些數據的屬性和關系,然后進行數據庫的邏輯設計,把各種信息用不同的表來存儲。比如,要開發一個圖書信息查詢系統。可以創建下面兩個表來分別表示書和出版社。
table Book (ID, Name, ISBN, Author, PublisherID, Price, Volume)
table Publisher (ID, Name, Telephone, Address, Postcode)
表Book包含了ID,書名,書號,作者,出版社ID,價格,頁數。表Publisher包含ID,社名,電話,地址,郵編。這兩個表通過出版社ID相關。
下面我們來介紹一種數據庫相關類的設計的模式。
數據庫相關類可以分成實體類(Entity Class)和會話類(Session Class)。
實體類對應于一個表的記錄的封裝,也就是該類的一個實例對應于表中的一個記錄。而且,該類中的屬性和記錄中的字段是一一對應的。
會話類對應于對一個表中的所有記錄的操作。比如增加一條記錄,刪除一條記錄,查找記錄和更新一條記錄。
通過使用這種設計模式,使程序更加模塊化,便于開發和維護。當然,也可以使用其他設計模式。
二、程序實現
在具體實現上面的這種模式時,往往根據具體的應用程序來選用不同的技術來實現。看到上面的描述模式后,我們很容易就發現,可以用EJB來實現(EJB分兩種,實體EJB和會話EJB)。
我們知道,EJB提出來的目的是用于提供一種分布式組件系統的開發。如果我們的應用程序是一個分布式的應用系統,那么毫無疑問,使用EJB來實現能大大減輕編程的工作量。同時,通過使用EJB容器的一些高級特性,可以使應用程序更加可靠,擴展性也大大加強。這樣一來,開發人員就不必關心一些底層技術,比如事務處理,安全等各個方面,而是把重點放在怎樣實現業務邏輯上。但是我們應該注意,如果開發的應用不是分布式的情況下,那么采用EJB有可能大大降低系統的性能。因為,EJB調用的開銷很大。
本文將探討在不利用EJB技術的情況下如何來實現上面介紹的這個模式。