<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    問題虛擬背景:
    A項目組要實現一個基于Sql Server的應用,但工作環境只安裝有MySql(公司對開源比較看好: )),而且客戶有可能會轉移到Oracle數據庫環境。要求應用具有數據庫移植能力和快速更換能力,使應用在工作環境調試成功后能迅速轉移到客戶的Sql Server環境,而且將來可以方便地轉向Oracle。

    Andy提出的可用方案:
    1、使用標準JDBC
    2、使用抽象類定義數據訪問單元
    3、定義具體數據源訪問單元繼承2中接口

    代碼示例:
    定義數據訪問單元抽象類,包含數據訪問邏輯

    public abstract class DataManager
    {
     
    protected static String conString = null;
     
    protected static String urlString = null;
     
    public DataType[ ] getData()
     
    {
       
    //fetch data using standard JDBC with conString and urlString
     }


     
    public void setData(DataType[ ] dataArray)
     
    {
       
    //store data using standard JDBC with conString and urlString
     }

    }

    定義具體數據源訪問單元

    public class HsqlDataManager extends DataManager
    {
     
    static
     
    {
      conString 
    = "org.hsqldb.jdbcDriver";
      urlString 
    = "jdbc:hsqldb:db/YourDatabaseName";
     }

    }


    public class OdbcBlogManager extends AbstractBlogManager
    {
     
    static
     
    {
      conString 
    = "sun.jdbc.odbc.JdbcOdbcDriver";
      urlString 
    = "jdbc:odbc:db/YourDatabaseName";
     }

    }


    在調用數據訪問層時,可以聲明一個DataManager的引用,然后在構造器中實例化為具體子類,如:

    public class Andy
    {
     
    private DataManager dataManager = null;
     
     
    public Andy
     
    {
      dataManager 
    = new HsqlDataManager();
      
    //或者在資源文件里填寫具體子類,然后在這里動態加載并實例化
     }
     

     
    public void doSomething()
     
    {
      dataManager.getData();
      
     }

    }


    以后要遷移到另一個數據庫(有JDBC驅動),只需定義具體子類繼承DataManager(如HsqlDataManager),然后修改資源文件中的DataManager名稱(或者將new的類名改一下),不需要修改代碼。

    這興許可以解釋另一個問題:不贊成使用存儲過程,而應將SQL語句嵌在代碼中(適用于Java;微軟注定.Net不會有平臺移植性,數據庫大都用Sql Server,所以寫存儲過程還是比較好的)。

    (我在我的一個Eclipse RCP項目里使用了這種模式,從Sql server 2000到Hsql,特別方便,看起來感覺也比較好)

    歡迎大家拍轉,^_^



    版權所有 羅明
    posted on 2005-10-06 15:49 羅明 閱讀(1031) 評論(2)  編輯  收藏 所屬分類: JavaProgramTech
    Comments
    • # re: 使應用具有快速更換數據庫能力
      tom
      Posted @ 2005-10-07 08:20
      HIBERNATE  回復  更多評論   
    • # re: 使應用具有快速更換數據庫能力
      Andy luo
      Posted @ 2005-10-07 08:31
      嗯,good  回復  更多評論   
     
    主站蜘蛛池模板: 亚洲精品成人区在线观看| 最新欧洲大片免费在线| 美腿丝袜亚洲综合| 免费无码国产在线观国内自拍中文字幕 | 99re8这里有精品热视频免费| 亚洲精品国产自在久久| 一本久久A久久免费精品不卡| 亚洲国产精品毛片av不卡在线| 美女被羞羞网站免费下载| 亚洲Av无码国产情品久久| 一二三四在线观看免费中文在线观看| 国产精品V亚洲精品V日韩精品 | 亚洲AV无码专区在线电影成人| 免费无码黄动漫在线观看| 精品国产日韩亚洲一区在线| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲网红精品大秀在线观看| 免费A级毛片无码A∨免费| 亚洲伦理中文字幕| 国产免费久久精品久久久| yellow视频免费看| 亚洲av无码成h人动漫无遮挡 | 成人黄网站片免费视频| 91亚洲精品视频| 青青草国产免费久久久91| caoporn成人免费公开| 亚洲另类激情综合偷自拍| 日韩一区二区a片免费观看 | 久久久久亚洲精品无码网址色欲| 亚洲成人影院在线观看| 免费高清国产视频| 亚洲国产精品无码久久九九大片 | 亚洲视频国产精品| 国产精品国产免费无码专区不卡| 国产男女爽爽爽免费视频| 亚洲精品乱码久久久久久下载| 日本免费无遮挡吸乳视频电影| 99精品视频在线观看免费| 中文字幕亚洲男人的天堂网络 | 在线亚洲午夜理论AV大片| 91视频国产免费|