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

首頁 > 學院 > 開發設計 > 正文

J2EE數據庫設計入門

2019-11-18 12:39:45
字體:
來源:轉載
供稿:網友

  在開發J2EE應用程序時,通常要找出應用程序中涉及到的各種信息,比如一個公司的產品目錄,或一個網站的用戶信息。我們會將這些信息放在數據庫里,然后分析這些數據的屬性和關系,再進行數據庫的邏輯設計,把各種信息用不同的表來存儲。
  例如,要開發一個原料信息查詢系統,可以創建下面兩個表分別表示原料和相應的生產商。
  table PRodUCtion (ID, Name, Weight,Maker,ProducerID, Price, Volume)
  table producer (ID, Name, Telephone, Address, Postcode)
  表production包含了ID、名稱、重量、生產人、生產者ID、價格、體積。表producer包含ID、生產者名、電話、地址、郵編。這兩個表通過生產者ID相關聯。
  數據庫類的設計
  數據庫相關類可以分成實體類(Entity Class)和會話類(session Class)。
  實體類對應于表記錄的封裝,也就是該類的一個實例對應于表中的一個記錄。而且,該類中的屬性和記錄中的字段是一一對應的。會話類對應于對表中所有記錄的操作,比如增加一條記錄、刪除一條記錄、查找記錄和更新一條記錄。
  通過使用這種設計模式,就可以使程序模塊化,便于開發和維護。
  在具體實現這種模式時,往往要根據具體的應用程序來選用不同的實現技術。在上面的模式中,我們很輕易就發現可以用EJB來實現。
  EJB提出來的目的是用于提供一種分布式組件系統的開發。假如應用程序是一個分布式的應用系統,使用EJB來實現能大大減輕編程的工作量。同時,通過使用EJB容器的一些高級特性,可以使應用程序更加可靠,擴展性也大大加強。從而,開發人員就不必關心一些底層技術,比如事務處理、安全等,而是把重點放在怎樣實現業務邏輯上。但是應該注重,假如開發的應用不是分布式的,那么采用EJB有可能大大降低系統的性能,因為EJB調用的開銷很大。
  在不使用EJB技術的情況下該如何實現上面介紹的這個模式呢?
  我們以剛才的開發產品信息查詢系統為例介紹實現方式。
  1.實體類的實現
  如前面講到的,實體類的每個實例與表中一個記錄對應。這樣,實體類的屬性應該和表的每個字段一一對應。必須注重的是,實體類的實例是每個記錄在內存中的對應,因此在程序中對實例的操作并不能馬上反應到數據庫的記錄中。
  在實體類中,只是對數據的包裝,因此,該類僅需要一些基本的方法,即setXX()和getXX()方法。
  下面是一個實體類,是對Production表的封裝。
  class Production{
  protected int  ID;
  protected String Name;
  protected String Weight;
  protected String Maker;
  protected int ProtectedID  
  protected double Price;
  protected int Volume;
  public void setID(int iID);
  public int getID();
  public void setName(String sName);
  public String getName();
  public void setWEIGHT(String sWEIGHT);
  public String getWEIGHT();
  public void set Maker(String sMaker);
  public String getMaker();
  public void setProtected ID(int iID);
  public int  getProtected ID();
  public void setPrice(double dPrice);
  public double getPrice();
  public void setVolume(int iVolume);
  public int getVolume();
  public Production(int iID, String sName, String sWEIGHT, int iprotected ID,
  double dPrice, int iVolume);
    };
  同樣也可以對表Producer進行封裝。
  2.會話類的實現
  會話類主要是對一個表進行處理。這些操作可以是在表中創建一條記錄、刪除一條記錄、更新一條記錄和查找一條記錄。這些操作的結果是將表中的記錄和內存中的實體類的實例對應起來,或將實例與表中的記錄對應起來。
  我們可以看一下對Production表的封裝:
  class ProductionTable{
  void Add(Production production);
  void Delete(Production production);
  void Update(Production production);
  Collection findbyID(int iID);
  Collection findbyXXXX(XX,XX);
  Collection findbyPulisherName(String sProducerName);
    };
  上面在類的申明中,Add()用于將內存中的一個Production實例映射到數據庫中。Delete()用于刪除數據庫中的某一個記錄。Update()用于更新表中的一個記錄。而findbyXXXX()則對應于Select語句。
  上面只是簡單的介紹了怎樣實現實體類和會話類,在具體的應用中,還要考慮到數據庫操作的一致性。
  事務處理
  為了確保對數據操作的完整和一致,在程序設計時要充分考慮到事務處理方面的問題。
  1.JDBC中怎樣將多個SQL語句組合成一個事務。
  在JDBC中,當打開一個連接對象Connection,缺省是auto-commit模式,每個SQL語句都被當作一個事務,即每次執行一個語句,都會自動得到事務確認。為了能將多個SQL語句組合成一個事務,要將auto-commit模式屏蔽掉。
  在auto-commit模式屏蔽掉之后,假如不調用commit()方法,SQL語句不會得到事務確認。在commit()方法調用之后的所有SQL會在方法commit()再次調用時得到確認。
  
  下面的代碼是一個示范:
  
  con.setAutoCommit(false);
   PreparedStatement updateSales=con.
  prepareStatement("UPDATE
   COFFES SET SALES=? WHERE
   COF_NAME LIKE ?");
   updateSales.setInt(1,50);
   updateSales.setString
  (2,"Colombian");
   updateSales.executeUpdate();
   PreparedStatement updateTotal=con.
  prepareStatement("UPDATE COFFEES SET TOTAL =TOTAL+ ? WHERE COD_NAME LIKE ?");
   updateTotal.setInt(1,50);
   updateTotal.setString(2,"Colo mbian");
   updateTotal.executeUpdate();
   con.commit(0;
   con.setAutoCommit(true);
  另外,在J2EE中,程序里可以使用JTA來調用底層的JTS(java Transaction Service)來處理分布式的事務處理。另外,假如使用EJB,可以通過在描述文件中指定Transaction的屬性來實現。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 城口县| 兴业县| 天镇县| 化隆| 涪陵区| 武城县| 虎林市| 台东县| 盈江县| 新宾| 英山县| 武义县| 磐安县| 汉沽区| 榆林市| 岑溪市| 太仆寺旗| 平陆县| 洞头县| 桐梓县| 来安县| 玉溪市| 南通市| 丰县| 霍林郭勒市| 沂水县| 乌鲁木齐市| 红安县| 临沭县| 尤溪县| 石台县| 建平县| 张家川| 宁南县| 苍山县| 淮滨县| 天峻县| 武威市| 积石山| 大渡口区| 台南县|