JDBC 筆記(4)

JDBC第四天
上午:
一.SQL3中的數據類型
Array:數組
Sturct:結構
大對象:
Blob:大的二進制數據文件對象。
Clob:大的文本文件對象。
優點:
1.理論上大小沒有上限,受制於數據庫表空間的大小.
2.流式讀取.


使用大對象的步驟:
1.先插入一個空的佔位對象empty_blob()(oracle的函數):insert into t_blob values(?,?,empty_blob());
2.獲得大對象:select blob_data from t_blob where name = ? for update;
3.獲取流進行寫入:blob.setBinaryStream(0);
4.通過流來獲取blob中存儲的數據:blob.getBinaryStream()




二.JDBC2.0擴展
1.JNDI(JAVA命名目錄接口)也用於存儲數據,但是他所存儲的是一些零散的信息,只提供簡單
的API進行讀取,需要服務器。


     JDBC                                JNDI
       |                                  |
    JDBC接口                           JNDI接口
       |                                  |           
      驅動                            服務提供者
       |                                  |                  
    數據庫                           fs,dap,註冊表


2.數據源:
包含了連接數據庫所需的信息,可以通過數據源的getConnection()方法來獲得數據庫連接。
a.連接工廠.
b.共享:服務器端維護,客戶端使用.


bind(String name, Object obj) 將名稱綁定到對象資源,建立指定的字符串和對象資源的關聯
lookup(String name) ,通過指定的字符串獲得之前綁定的資源


下午:
3.連接池:
保持連接池中有指定個數的連接,並在程序使用過之後不關閉連接,再放回連接池中等待其他的程序在需要時來取用,
這樣可以大量的節省銷燬和創建連接的資源消耗。


4.分佈式的事務:
分佈式事務是針對多個不同數據庫同時操作,要保證原子操作的不可分,事務的提交和回滾交給中間服務器來處理。
(兩階段提交),也就是在中間服務器發送sql語句等待數據庫迴應,都回應操作成功才提交,否則同時回滾。


5.RowSet:
行集:增強了ResultSet的功能,通過RowSet可以獲得數據源,並且它還可以使用RowSet的方法。
CachedRowSet能夠自動得到連接和斷開連接.


6.CallableStatement:
CallableStatement是可以用非sql語句來訪問數據庫,他是通過調用存儲過程(PL/SQL)來訪問數據庫的,這樣保證安全.
可以使用com.prepareCall(存儲過程名)方法,來執行這個存儲過程。
缺點:
1.可移植性差
2.速度上的優勢並不明顯


三.Object-Relational-Mapping
1.對象id(OID)使用高低位算法先產生高位,再產生低位.
2.類應當對應到表,屬性對應到字段,對象對應到記錄,類之間的關係對應到表之間的關係.
3.類繼承關係對應表的三種情況:
a,每個類建一個表,爲父子類都創建對應的表,這樣會共享主鍵,如果類比較多就不適合了.
b,只有對子類才建表,也就是把父類中的屬性均勻分配到子類的表中,這種表關係不能使用多態
c,所有類對應於一張表,這種方法是通過加上一個字段來區分父子類,這種表關係
只能適用於類屬性較少的情況下,而且數據會有冗餘。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章