?? 08. jdbc note.txt
字號:
/*********通過JNDI獲得綁定的資源**************/
public static Object lookup(String context) throws NamingException{
Properties pro = new Properties();
//Weblogic的JNDI服務器參數
pro.put(InitialContext.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
pro.put(InitialContext.PROVIDER_URL, "t3://localhost:7001");
Context ctx = new InitialContext(pro);
return ctx.lookup(context);//查找;通過指定的字符串獲得先前綁定的資源。
}
(三)連接池:
在內存中用來保存一個個數據庫連接的對象。
訪問數據庫時,建立連接和拆連接需要花費較長時間,通過以連接池直連的方式獲取連接,不需要注冊驅動程序,可以大量
的節省銷毀和創建連接的資源消耗,提高訪問數據庫的效率。
注:通過連接池獲得的Connection,當執行con.close()時,不是關閉連接,而是表示將連接釋放回連接池。
連接池是一個很復雜的算法,由服務器廠商實現。
(四)分布式的事務管理器JTA
分布式事務是通過多個異地數據庫執行一組相關的操作,要保證原子操作的不可分,
也不用再自己寫commit,和rollback,全部都交給中間服務器(TM)來處理。
(兩階段提交),也就是在中間服務器發送sql語句等待數據庫回應,都回應操作成功才提交,否則同時回滾。
---------------- commit
con1 ------->| TM(事務管理器) | -----------> DB1
con2 ------->| commit | -----------> DB2
---------------- commit
1、regester
2、TM->execute()
3、commit->TM
4、TM->commit->DB
(五)RowSet
行集,這是一個JavaBean(事件機制),它增強了ResultSet的功能,包裝了Connection、Statement、
ResultSet、DriverManage。通過RowSet可以獲得數據源,設置隔離級別,也可以發送查尋語句,也實現了離線的操
作遍歷,RowSet也支持預編譯的Statement。是結果集的子接口,為快速開發而設(目前還不夠成熟,沒人用)。
RowSet中的方法大致上和ResultSet相同,當需要使用時請查閱JAVA API參考文檔。
八、JDBC應用的分層(DAO)
分層就是對功能的隔離,降低層與層之間的耦合性。
軟件的分層初步:
JSP Struts
View(界面) --> Controlle --> Atio ---> Service/Biz --> DAO ----> DB
重新封裝 可復用 封裝信息 懂業務邏輯 數據訪問層 數據層
調業務 無技術難度 與業務無關
誰依賴誰就看誰調用誰。
軟件的分層設計,便于任務的劃分、降低層間的耦合。
結合PMS的設計方法,思考這樣分層的好處。
并且,使代碼盡量減少重復,可復用性好,擴展余地加大,而且盡量減少硬編碼。
需求:實現對Person類的數據庫持久化基本操作(CRUD)。
BS架構和CS架構:
C-S架構:兩層體系結構,主要應用于局域網中。
B-S架構:三層體系結構,表現層+業務邏輯層+數據存儲層
注:層面越多,軟件越復雜,但更靈活。分層是必須的但是要有個度。
層次一但確定,數據必須按層訪問,不能跨層訪問。
層與層之間最好時單向依賴(單向調用)。
縱向劃分:按功能劃分。分成三層體系結構(也有兩層的)。
橫向劃分:按抽象劃分。分成抽象部分和實現部分。
/***以下老師沒講的內容******/
一、JDBC異常處理:
JDBC中,和異常相關的兩個類是SQLException和SQLWarning。
1.SQLException類:用來處理較為嚴重的異常情況。
比如:① 傳輸的SQL語句語法的錯誤;
② JDBC程序連接斷開;
③ SQL語句中使用了錯誤的函數。
SQLException提供以下方法:
getNextException() —— 用來返回異常棧中的下一個相關異常;
getErrorCode() —— 用來返回代表異常的整數代碼 (error code);
getMessage() —— 用來返回異常的描述信息 (error message)。
2.SQLWarning類:用來處理不太嚴重的異常情況,也就是一些警告性的異常。
其提供的方法和使用與SQLException基本相似。
結合異常的兩種處理方式,明確何時采用哪種。
A. throws 處理不了,或者要讓調用者知道;
B. try … catch 能自行處理,就進行異常處理。
二、JavaBean的定義:
1、是一個普通的Java類
2、在結構上沒有預先的規定,不需要容器,不需要繼承類或實現接口
3、要求必須放在包中,要求實現Serializable接口
4、要求有一個無參的構造方法.
5、屬性的類型必須保持唯一,get方法返回值必須和set方法參數類型一致
6、對每個屬性要有對應的get和set方法。注:隱藏屬性可以沒有
7、可以有外觀作為顯示控制,事件機制。
三、SQL數據類型及其相應的Java數據類型
SQL數據類型 ? ? ? ? ? ? Java數據類型 ? ? ? ? ? ? ?說明
??---------------------------------------------------------------------------------------
? ?INTEGER或者INT ? ? ? ? ? int ? ? ? ? ? ? ? 通常是個32位整數
? ?SMALLINT ? ? ? ? ? ? ? short ? ? ? ? ? ? 通常是個16位整數
? ?NUMBER(m,n) ? ? ? Java.sql.Numeric ? ?合計位數是m的定點十進制數,小數后面有n位數
DECIMAL(m,n) 同上
? ?DEC(m,n) ? ? ? ? ? ? ? Java.sql.Numeric ? ?合計位數是m的定點十進制數,小數后面有n位數
? ?FLOAT(n) ? ? ? ? ? ? ? double ? ? ? ? ? 運算精度為n位二進制數的浮點數
? ?REAL ? ? ? ? ? ? ? ? ? float ? ? ? ? ? ?通常是32位浮點數
? ?DOUBLE ? ? ? ? ? ? ? ? double ? ? ? ? ? 通常是64位浮點數
? CHAR(n) ? ? ? ? ? String ? ? ? ? ? 長度為n的固定長度字符串
CHARACTER(n) 同上
? ?VARCHAR(n) ? ? ? ? ? ?String ? ? ? ? ? 最大長度為n的可變長度字符串
? ?BOOLEAN ? ? ? ? ? ? ? ?boolean ? ? ? ? ?布爾值
? ?DATE ? ? ? ? ? ? ? ? ? Java.sql.Date ? ? 根據具體設備而實現的日歷日期
? ?TIME ? ? ? ? ? ? ? ? ? Java.sql.Time ? ? ? 根據具體設備而實現的時戳
? ?TIMESTAMP ? ? ? ? ? ?? Java.sql.Timestamp ?根據具體設備而實現的當日日期和時間
? ?BLOB ? ? ? ? ? ? ? ? Java.sql.Blob ? ?? 二進制大型對象
? ?CLOB ? ? ? ? ? ? ? ? ?Java.sql.Clob ? ?? 字符大型對象
? ?ARRAY ? ? ? ? ? ? ? ?? Java.sql.Array
四、 面向對象的數據庫設計
類的關聯,繼承在數據庫中的體現:
類定義―――>表定義
類屬性―――>表字段
類關系―――>表關系
對 象―――>表記錄
注: Oid(對象id)―――>業務無關
在數據庫中每一條記錄都對應一個唯一的id;
Id通常是用來表示記錄的唯一性的,通常會使用業務無關的數字類型
字段的個數不會影響數據庫的性能,表則越多性能越低。
(一)類繼承關系對應表,
1、 為每一個類建一張表。通過父類的Oid來體現繼承關系。
特點:在子類表中引用父類表的主建作為自己的外建。
優點:方便查詢。屬性沒有冗余。支持多態。
缺點:表多,讀寫效率低。生成報表比較麻煩。
2、 為每一個具體實現類建一個表
特點:父類的屬性被分配到每一個子類表中。
優點:報表比較容易
缺點:如果父類發生改變會引起所有子類表隨之更改。并且不支持多態。數據有少量冗余。
3、 所有的類在一張表中體現,加一個類型辨別字段
特點:效率高,查詢不方便,用于字段不多時。
優點:支持多態,生成報表很簡單。
缺點:如果任何一個類發生變化,必須改表。字段多,難以維護。
(二)類關聯關系對應表
1、 一對一關聯,類關系對應成表時有兩種做法:
一是引用主鍵,也就是一方引用另一方的主鍵既作為外鍵有作為自身的主鍵。
二是外鍵引用,一方引用另一方的主鍵作為自身的外鍵,并且自己擁有主鍵。
2、 一對多關聯,也就是多端引用一端的主鍵當作外鍵,多端自身擁有主鍵。
3、 多對多關系,多對多關系是通過中間表來實現的,中間表引用兩表的主鍵當作聯合主鍵,就可以實現多對多關聯。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -