為什麼老需要ADO或者JDO呢?這是因為對數據庫查詢時所用的語言都不是本地語言,即它們都是高級語言(high lvl language)declarative language,,而在你的程序中加入SQL語言(本地訪問數據庫),因此需要這些ado提供接口api
要知道,相等跟“同一”並不是二個“同一”的概念,,,如果二個引用都指向同一個對象,那麼這二個引用所對的對象是同一對象,如果二個不同的物體,也即有不同內存引用,如果它們的全部成員相等,那麼它們都是相等對象
比如Delphi的二進制窗體文件,它將控件OO對象存入一個硬盤文件,以後編譯時可加入到代碼中來,這就涉及到OO的持久化問題!!專門用來定義可持久OO對象的語言稱為ODL!!
有一個於2002年解散的組織創立了一個OQL,對象查詢語言,然而它被放到OO數據庫就是不必要的中間抽象,這是為什麼呢?
為了使用某樣東西而設立使用者把使用對象之間的抽象,,稱為對接口編程
在關系數據庫時代,過程性語言跟關系數據庫的程序邏輯中的數據模式是相對應的,然而當程序語言發展到了今天的OO時代,如果再使用關系型數據庫就像把車放進車庫裡之前把它拆散了,明天開的時候再把它裝起來(一輛車本來就是一個整體,而且是具備一個邏輯可運行的整體,僅僅是為了存儲的需要而把它拆散是不必要的抽象,因為明天還要把車推出車庫再開嘛),,OO數據庫裡的數據都是OO對象的實例,這種數據模型邏輯完全對應了OO程序的程序邏輯,而且省了中間查詢語言這層為了使用而設立的高層抽象,,用編程語言的本地語言就可以,並且可以保證代碼的類型安全,
而在關系模式中,查詢語句往往作為字符串被傳遞到程序,,雖然有一些機制可以保證它的代碼安全性,(有用某種語言寫的存儲過程,比如用一個Java會話bean寫成的會話bean)然而大部分情況下,一些東西還是不能被避免的,比如數據庫存在一個程序中並不存在的實例引用(對象應該只包括變量與操作,但是考慮其與本地的接入點,內存引用指針來說,一個對象就應該包括這三部分了),數據庫依然會為它產生一個查詢(而只有在type safe機制下才能保證一個未被引用的變量引用在編譯時被調試到)