成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 吉林OA系統(tǒng) > 長春OA系統(tǒng) > 長春OA行業(yè)資訊
設(shè)計以及設(shè)計模式:非主流存儲數(shù)據(jù)方式
數(shù)據(jù)會存到哪兒,在仔細(xì)考慮這個問題前,我肯定毫無疑問的說,肯定存數(shù)據(jù)庫唄。其實不然,想想很多網(wǎng)站的圖片就沒有存到數(shù)據(jù)庫,直接保存到文件系統(tǒng)。再比如寫配置信息,既可能存到文件里,也可能存到數(shù)據(jù)庫里。除了這流行的方式外,,還有沒有別的地方可以存數(shù)據(jù)呢。
答案是有的??梢源嬖诔绦蚶?。最常見的例子是直接把配置信息寫在Java類的屬性里,這樣的好處是容易該,如果需要改邏輯又需要改配置信息,這樣只要在代碼里修改就好了,省的倆頭改(程序和配置文件),比如以下代碼
public class DBHelper {
private static String url = "jdbc:mysql://localhost/warehouse?user=root&password=";

static {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("沒有找到驅(qū)動!");
}
}
public static Connection getConnection() {
try {
Connection conn =
DriverManager.getConnection(url);
return conn;
} catch (SQLException ex) {
// handle any errors
ex.printStackTrace();
throw new RuntimeException("獲取數(shù)據(jù)庫連接錯誤!");
}
}
這個DBHelper 搞定一切,哪怕你是以后遇到切換成連接池,數(shù)據(jù)庫IP地址更改或者數(shù)據(jù)庫變成Oralce的需求。
在舉一個列子,數(shù)據(jù)庫里一個表放有注冊用戶信息,你也許想在首頁上顯示到目前為止會員姓李的有多少個,姓張的有多少個,姓王的有多少個.完成這個需求,一般的思路是后臺程序定期統(tǒng)計,然后倒入到一個數(shù)據(jù)庫表里,這個表內(nèi)容大概如下:
LastName total
李 778,000

張 478,000
王 218,000
然后寫一打端MVC程序去顯示在主頁上。這種方法是很好,不過還有更簡單的方法,那就是不用數(shù)據(jù)庫,后臺統(tǒng)計程序直接生成包含這些統(tǒng)計信息的JSP頁面就成。這樣的好處是省掉很多程序,而且維護(hù)也很方便,比如如果想夸大張姓人數(shù),那直接改JSP好了,誰都會,保證不出錯
還有一個不太常用一個列子,可以把圖片二進(jìn)制編碼后當(dāng)著一個字符串屬性,這樣就省的去讀圖片了,如公司的Logo信息或者你的產(chǎn)品的Logo
其實把數(shù)據(jù)放到程序里應(yīng)該很廣泛的,比如老的C程序,再比如匯編程序都是數(shù)據(jù)和邏輯放到一起。只是由于現(xiàn)在MVC流行,數(shù)據(jù)被當(dāng)著單獨的一部分考慮了,這要好處很多,但有時候,可以考慮以下非主流的方式,其好處就是倆個字:簡單。(IT專家網(wǎng)論壇)
本站推薦
- 1設(shè)計院用生產(chǎn)進(jìn)度管理軟件,復(fù)雜項目進(jìn)度把控能 hold 住嗎?
- 2財務(wù)庫存管理系統(tǒng)設(shè)計,復(fù)雜場景能 hold 住嗎?
- 3課程設(shè)計用庫存管理系統(tǒng),能替代人工完成庫存盤點嗎?
- 4園林工程現(xiàn)場繪圖難題咋破?這款圖紙設(shè)計軟件能 hold 住嗎?
- 5園林工程現(xiàn)場繪圖設(shè)計,用啥軟件能快速出方案?
- 6服裝廠用倉庫布料管理系統(tǒng)設(shè)計,能適配服裝行業(yè)流程嗎?
- 7金雕裝飾的設(shè)計和施工水平怎么樣
- 8土建工程里做模板設(shè)計用哪個軟件好?能替代人工繪圖不?
- 9土建工程配電系統(tǒng)設(shè)計,復(fù)雜建筑場景下能 hold 住嗎?

