国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

簡析J2EE程序的數(shù)據(jù)庫類設(shè)計模式

2019-11-17 06:15:51
字體:
供稿:網(wǎng)友
  本文主要介紹一種數(shù)據(jù)庫相關(guān)類的設(shè)計模式。并介紹在J2EE框架中的具體實現(xiàn),以及在事務(wù)處理方面的一些考慮。

  一、設(shè)計模式簡介

  在開發(fā)J2EE應(yīng)用程序時,通常是要找出應(yīng)用程序中涉及到的各種信息,比如一個公司的產(chǎn)品目錄,或一個網(wǎng)站的用戶信息,我們會將這些信息放在數(shù)據(jù)庫里。

  在通常的設(shè)計中,我們要分析這些數(shù)據(jù)的屬性和關(guān)系,然后進行數(shù)據(jù)庫的邏輯設(shè)計,把各種信息用不同的表來存儲。比如,要開發(fā)一個圖書信息查詢系統(tǒng)。可以創(chuàng)建下面兩個表來分別表示書和出版社。

  table Book (ID, Name, ISBN, Author, PublisherID, PRice, Volume)

  table Publisher (ID, Name, Telephone, Address, Postcode)

  表Book包含了ID,書名,書號,作者,出版社ID,價格,頁數(shù)。表Publisher包含ID,社名,電話,地址,郵編。這兩個表通過出版社ID相關(guān)。

  下面我們來介紹一種數(shù)據(jù)庫相關(guān)類的設(shè)計的模式。

  數(shù)據(jù)庫相關(guān)類可以分成實體類(Entity Class)和會話類(session Class)。

  實體類對應(yīng)于一個表的記錄的封裝,也就是該類的一個實例對應(yīng)于表中的一個記錄。而且,該類中的屬性和記錄中的字段是一一對應(yīng)的。

  會話類對應(yīng)于對一個表中的所有記錄的操作。比如增加一條記錄,刪除一條記錄,查找記錄和更新一條記錄。

  通過使用這種設(shè)計模式,使程序更加模塊化,便于開發(fā)和維護。當(dāng)然,也可以使用其他設(shè)計模式。

  二、程序?qū)崿F(xiàn)

  在具體實現(xiàn)上面的這種模式時,往往根據(jù)具體的應(yīng)用程序來選用不同的技術(shù)來實現(xiàn)。看到上面的描述模式后,我們很輕易就發(fā)現(xiàn),可以用EJB來實現(xiàn)(EJB分兩種,實體EJB和會話EJB)。

  我們知道,EJB提出來的目的是用于提供一種分布式組件系統(tǒng)的開發(fā)。假如我們的應(yīng)用程序是一個分布式的應(yīng)用系統(tǒng),那么毫無疑問,使用EJB來實現(xiàn)能大大減輕編程的工作量。同時,通過使用EJB容器的一些高級特性,可以使應(yīng)用程序更加可靠,擴展性也大大加強。這樣一來,開發(fā)人員就不必關(guān)心一些底層技術(shù),比如事務(wù)處理,安全等各個方面,而是把重點放在怎樣實現(xiàn)業(yè)務(wù)邏輯上。但是我們應(yīng)該注重,假如開發(fā)的應(yīng)用不是分布式的情況下,那么采用EJB有可能大大降低系統(tǒng)的性能。因為,EJB調(diào)用的開銷很大。

  本文將探討在不利用EJB技術(shù)的情況下如何來實現(xiàn)上面介紹的這個模式。

  下面以開發(fā)圖書信息查詢系統(tǒng)為例。

  1.實體類

  如前面講到的,實體類的每個實例與表中一個記錄對應(yīng)。這樣,實體類的屬性應(yīng)該和表的每個字段一一對應(yīng)。必須注重的是,實體類的實例是每個記錄在內(nèi)存中的對應(yīng),因此,在程序中對實例的操作并不馬上反應(yīng)到數(shù)據(jù)庫的記錄中。

  在該類中,只是對數(shù)據(jù)的包裝,因此,該類僅需要一些基本的方法,即setXX()和getXX()方法。

  下面是一個實體類,是對Book表的封裝。

  class Book{

   protected int  ID;

   protected String Name;

   protected String ISBN;

   protected String Author;

   protected int  PublisherID;

   protected double Price;

   protected int  Volume;

   public void setID(int iID);

   public int  getID();

   public void setName(String sName);

   public String getName();

   public void setISBN(String sISBN);

   public String getISBN();

   public void setAuthor(String sAuthor);

   public String getAuthor();

   public void setPublisherID(int iID);

   public int  getPublisherID();

   public void setPrice(double dPrice);

   public double getPrice();

   public void setVolume(int iVolume);

   public int  getVolume();

   public Book(int iID, String sName, String sISBN, int ipublisherID, double dPrice, int iVolume);


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陵川县| 巴东县| 三河市| 罗山县| 崇明县| 田东县| 贺州市| 林周县| 久治县| 建水县| 彭水| 离岛区| 平远县| 即墨市| 吉安市| 白山市| 古浪县| 新泰市| 基隆市| 兴城市| 平昌县| 同仁县| 简阳市| 临澧县| 徐州市| 阳山县| 浦城县| 保康县| 沁源县| 高青县| 彭州市| 三穗县| 清丰县| 尚义县| 黔江区| 肃北| 通化县| 资溪县| 高尔夫| 南京市| 福建省|