嗨 甲骨文【5】
發表于:2007-07-02來源:作者:點擊數:
標簽:
對象類型 看此章節之前,我對JDO有一點了解,能聯想起JDO是因為它將數據以對象來操作,不知這一章將帶給我什么。聽說原來 Oracle 還是蠻支持JDO的,只是后來以Hibernate為首的Mapping模式更加流行,JDO卻不盡如人意,才使之對JDO有所冷淡不管怎樣,面對復雜
對象類型
看此章節之前,我對JDO有一點了解,能聯想起JDO是因為它將數據以對象來操作,不知這一章將帶給我什么。聽說原來
Oracle還是蠻支持JDO的,只是后來以Hibernate為首的Mapping模式更加流行,JDO卻不盡如人意,才使之對JDO有所冷淡…不管怎樣,面對復雜的商業邏輯,關系型
數據庫在現今是非變不可的,只是變向哪里去的問題。
對象組件包括屬性和方法
屬性是Attribute的翻譯。通常在高級語言里,屬性通常是Property的翻譯,而Attribute被譯為特征。在Oracle里,Attribute和
java里的Property是對應的。即擁有描述對象所具有的屬性。
方法(Method)用于實現對象所執行的操作。
構造方法在9i后,允許重載了.
MEMBER方法就是高級語言里的實例方法,
MEMBER PROCEDURE fangfa1 ()
MEMBER FUNCTION fangfa2() RETURN simple_type
使用:
DECLARE
a_shili a_lei;
BEGIN
a_shili.fangfa1()
而STATIC方法就是類方法,全局方法。
A_lei.staticfangfa();
MAP方法用于將對象實例映射為標量數值
ORDER方法用于比較兩個對象實例的大小
MAP和ORDER不能同時使用。
對象類型
包括 對象類型規范(Object Type Specification)和對象類型體(Object Type Body)
就是定義和實現部分。對于熟悉delphi的人,也許會認為這樣的方式才顯得很得體。
建立對象類型規范的語法:
CREATE OR REPLACE TYPE type_name AS OBJECT(
Attribute1 datatype,[,attribute2 datatype,…],
[MEMBER|STATIC method1 spec,
MEMBER|STATIC method2 spec,…]);
建立對象類型體的語法:
CREATE OR REPLACE TYPE BODY type_name AS
MEMBER|STATIC method1 body;
MEMBER|STATIC method2 body;
…]);
建立對象類型時,至少定義一個屬性,可以不定義方法(這是不需要建立對象類型體)。
對象表
就象高級語言里的對象/實例,是對類的實現。
分為行對象和列對象
行對象是直接給予對象類型所建立的表
CREATE TABLE table_name OF type_name
列對象是包含多個列的對象表
CREATE TBALE table_name{
Mynum number(6),
Mytype type_name,
Mychar varchar2(10)
);
REF數據類型
通過REF應用行對象,何以是不同的表共享相同的對象,從而降低了內存的占用。
原文轉自:http://www.kjueaiud.com