黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 持久化對(duì)象的概念

持久化對(duì)象的概念

更新時(shí)間:2022-08-09 10:31:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1142次

1.簡(jiǎn)介

該概念面向希望利用 IS 7 持久對(duì)象層(數(shù)據(jù)層)創(chuàng)建新持久對(duì)象或重用現(xiàn)有對(duì)象的開發(fā)人員.在處理持久對(duì)象開發(fā)之前,Intershop建議熟悉 Enfinity 定義語言、EDL 建模和業(yè)務(wù)對(duì)象開發(fā)。

持久對(duì)象和建模

由磁帶編碼的功能通常需要在數(shù)據(jù)庫中持久存儲(chǔ)信息。如果不存在合適的數(shù)據(jù)庫表,則必須創(chuàng)建新表。為了使管道等應(yīng)用程序組件可以訪問這些數(shù)據(jù)庫表,需要在持久層創(chuàng)建新的持久對(duì)象。可能還需要實(shí)現(xiàn)額外的管理器類,這些管理器類對(duì)新的持久對(duì)象進(jìn)行操作。

2.持久對(duì)象

(1)持久對(duì)象類

持久對(duì)象 (PO) 是用于將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫或從數(shù)據(jù)庫讀取數(shù)據(jù)的 Java 對(duì)象。采購訂單由四個(gè)(可選五個(gè))文件組成:

表示持久對(duì)象的 PO 類 各個(gè)類都帶有后綴PO,例如ProductPO.java.

描述對(duì)象-關(guān)系映射(OR 映射)的描述符文件 描述符文件的文件擴(kuò)展名為*.orm,例如ProductPO.orm.

用于生命周期管理的工廠類各個(gè)類都帶有后綴POFactory,例如ProductPOFactory.java.

用于標(biāo)識(shí)持久對(duì)象的關(guān)鍵類 各個(gè)類都帶有后綴POKey,例如ProductPOKey.java.

如果模型定義了一個(gè) key 一個(gè)備用 key-class相應(yīng)的類帶有后綴POAlternateKey,例如. .Preference DefinitionPOAlternateKeyjava

這些類通常是墨盒內(nèi)部封裝的一部分,不會(huì)公開。除了這個(gè)抽象基類的持久對(duì)象可能參與公共 API。

(2)對(duì)象關(guān)系映射

將類映射到表在 Intershop 7 中,單個(gè) PO 映射到單個(gè)表或數(shù)據(jù)庫視圖。Intershop 7 中未使用其他可能性,例如將類映射到連接表或其他結(jié)構(gòu)。PO 的每個(gè)實(shí)例對(duì)應(yīng)于一行。類的屬性對(duì)應(yīng)于列。類的主鍵屬性映射到表的主鍵,即用于唯一標(biāo)識(shí)行的列(或列)。

映射和繼承關(guān)系Intershop 7 使用一種方法,根據(jù)這種方法,只有葉類映射到數(shù)據(jù)庫中,而超類必須是抽象的。葉類的表既包含從超類繼承的屬性,也包含它們自己的屬性。

(3)持久對(duì)象的基類

Intershop 7 中的許多 PO 派生自通用基類RegionalSettingsPOor ExtensibleObjectsPO,它們都是 com.intershop.beehive.core.capi.domain 的一部分。PersistentObjectPO自動(dòng)提供一系列屬性,確保以與 Intershop 7 機(jī)制和流程兼容的方式定義這些屬性。自動(dòng)提供的屬性 RegionalSettingsPO包括:

AUUID作為主鍵

樂觀控制屬性 ( oca)

domainID屬性

這是用于引用持久對(duì)象所屬域的外鍵屬性。派生自的類 RegionalSettingsPO自動(dòng)繼承獲取和設(shè)置 的domainID方法,以及獲取和設(shè)置 . 引用的持久對(duì)象的域?qū)嵗姆椒╠omainID。

域getDomain () 
void  setDomain (Domain aDomain) 
String getDomainID () 
void  setDomainID (String aDomainID)

此外,ExtensibleObjectPO(的子類RegionalSettingsPO)提供了允許開發(fā)人員在運(yùn)行時(shí)添加自定義屬性的功能,如參考 - 持久對(duì)象的屬性 - 可擴(kuò)展對(duì)象屬性中所述。

(4)持久對(duì)象類的建模示例

以下 EDL 片段定義了一個(gè)持久對(duì)象,包括與其他對(duì)象的依賴關(guān)系。

命名空間 com.intershop.training.bc_warehouse.internal
{
  orm類 WarehousePO 擴(kuò)展 ExtensibleObjectPO 實(shí)現(xiàn) Warehouse
     {
      索引(地址ID);
      屬性名: string< 256 > 必填;
      屬性位置:字符串< 256 >;
      屬性容量: int ;
      屬性描述:字符串本地化;
      屬性地址ID:uuid;
      依賴地址:地址處理程序“com.intershop.beehive.core.capi.profile.ProfileMgr”
      {
        外鍵(addressID);
      }
      關(guān)系 stockItemPOs : StockPO[ 0. .n] 逆?zhèn)}庫PO實(shí)現(xiàn)stockItems;
    }
}

3.持久對(duì)象之間的關(guān)系

通常,您的對(duì)象模型由一組不獨(dú)立的 PO 組成,而是以各種方式連接。在對(duì)象模型中,類之間的這些連接被建模為關(guān)系或依賴關(guān)系。

以下部分更詳細(xì)地描述了關(guān)系的所有方面。

(1)關(guān)系類型:關(guān)系和依賴關(guān)系

Intershop 7 基于兩種基本的關(guān)系類型:

關(guān)系

關(guān)系表示類之間的雙向語義連接。

以下 EDL 片段定義了兩個(gè)對(duì)象WarehousePO和StockPO. 側(cè)邊的關(guān)系定義WarehousePO:

關(guān)系 stockItemPOs : StockPO[ 0. .n]
逆?zhèn)}庫PO實(shí)現(xiàn)stockItems;

側(cè)面關(guān)系定義StockPO:

關(guān)系倉庫PO: WarehousePO[ 1. . 1 ]
反向 stockItemPOs 實(shí)現(xiàn)倉庫
{
外鍵(倉庫ID) -> (UUID);
}

依賴關(guān)系

依賴關(guān)系表示類之間的單向關(guān)系。在這種情況下,“單向”意味著該關(guān)系只能在一個(gè)方向上導(dǎo)航。依賴關(guān)系通常用于在不同磁帶的持久類之間建立關(guān)系。

以下 EDL 片段(來自WarehousePO)對(duì)連接WarehousePO和Address. 它表示我們只能從WarehousePOto導(dǎo)航關(guān)系,而Address不是相反。

依賴地址:地址處理程序
“com.intershop.beehive.core....
capi.profile.ProfileMgr”
{
外鍵(addressID);
}

與關(guān)系相比,依賴關(guān)系在內(nèi)部以非常不同的方式處理。依賴項(xiàng)未在 ORM 部署描述符文件中注冊(cè),它們不需要重新創(chuàng)建引用的類。因此,依賴關(guān)系可用于將自定義 PO 類鏈接到 Intershop 7 提供的 CAPI 對(duì)象(例如Product)。

(2)關(guān)系的多樣性

根據(jù)關(guān)系每一方的多重性類型,通常區(qū)分三種基本類型的關(guān)系:

一對(duì)一

允許 [0..1] 到 [1..1];[1..1] 到 [0..1] 和 [0..1] 到 [0..1]。由于雞或蛋的困境,禁止 [1..1] 到 [1..1] 的關(guān)系。

一對(duì)多

允許 [1..1] 到 [0..n] 和 [0..1] 到 [0..n]。而 [0..1] 到 [1..n] 不是一個(gè)實(shí)際已知的用例。

多對(duì)多

多對(duì)多關(guān)系總是需要一個(gè)連接表來進(jìn)行映射。

對(duì)于關(guān)系,多重性在定義中聲明。對(duì)于依賴項(xiàng),多重性僅由代碼間接定義

1)一對(duì)多關(guān)系

一對(duì)多關(guān)系在關(guān)系數(shù)據(jù)庫設(shè)計(jì)中很常見,允許以經(jīng)濟(jì)的方式表示復(fù)雜的數(shù)據(jù)集。例如,每個(gè) WarehousePO 實(shí)例都指向?qū)儆谒?StockPO 實(shí)例。同樣,每個(gè)StockPO指向它的WarehousePO.

為了將倉庫和庫存數(shù)據(jù)關(guān)聯(lián)起來,表中需要一個(gè)特殊的列,為每個(gè)實(shí)例StockPO標(biāo)識(shí)正確的實(shí)例。這個(gè)特殊的列作為外鍵,它通常映射到相關(guān)表的主鍵,在我們的例子中,表。WarehousePOStockPOWarehousePO回到關(guān)系的表示,這意味著您必須引入一個(gè)特殊的屬性,該屬性用作外鍵并映射到相關(guān) PO 類的主鍵屬性上。在一對(duì)多關(guān)系中,外鍵在類中定義多面, 例如, StockPO, 它映射到類的主鍵上一邊,例如,WarehousePO。

EDL 片段來自多面,例如StockPO:

索引(倉庫ID);
屬性warehouseID: uuid 必填 只讀;
關(guān)系倉庫PO: WarehousePO[ 1. . 1 ] 逆stockItemPOs實(shí)現(xiàn)倉庫
{
  外鍵(倉庫ID) -> (UUID);
}

對(duì)于一對(duì)多關(guān)系,代碼生成器為所涉及的兩個(gè)類創(chuàng)建特殊方法,多面和上的課一邊. 方法因所考慮的類別而異。

多端方法

為類生成的方法多面,例如,StockPO允許您訪問代表類的角色一邊,例如,WarehousePO。

public WarehousePO getWarehousePO ()

單方面的

方法一邊,例如,WarehousePO代碼生成器創(chuàng)建一個(gè)方法來訪問代表類的相關(guān)角色多面,例如StockPO:

公共集合getStockItemPOs () 
公共迭代器createStockItemPOsIterator ()

此外,代碼生成器創(chuàng)建關(guān)系包裝器方法。這些方法檢查特定元素是否參與關(guān)系:

public  boolean  isInStockItemPOs (StockPO anElement) 
public  int  getStockItemPOsCount ()

2)依賴

依賴關(guān)系是與實(shí)現(xiàn)的類的單向關(guān)系PersistentObject。單向意味著它們只能在一個(gè)方向上遍歷:從源類到目標(biāo)類。目標(biāo)類總是有多個(gè)0..1. 在下面的 EDL 片段WarehousePO中,依賴關(guān)系表示 的每個(gè)實(shí)例WarehousePO都與 的一個(gè)實(shí)例相關(guān)聯(lián)Address。與正常的關(guān)聯(lián)關(guān)系相反,依賴關(guān)系沒有表達(dá)相反的陳述,即每個(gè)實(shí)例Address都可以與一個(gè)或多個(gè)實(shí)例相關(guān)聯(lián)WarehousePO。Address不知道兩個(gè)實(shí)體之間的存在和WarehousePO 關(guān)系。但是,如果業(yè)務(wù)邏輯需要此功能,則可以確定所有實(shí)例WarehousePO通過使用查詢與給定地址相關(guān)。結(jié)果可能包含許多實(shí)例或僅包含一個(gè)實(shí)例,如果這受到實(shí)現(xiàn)的限制。因此,依賴于實(shí)現(xiàn),依賴關(guān)系可以是一對(duì)多或一對(duì)一的關(guān)系。

依賴地址:地址處理程序“com.intershop.beehive.core.capi.profile.ProfileMgr”
{
  外鍵(addressID);
}

代碼生成器為依賴項(xiàng)創(chuàng)建的代碼只影響源類,而不影響目標(biāo)類。Address因此,如果您創(chuàng)建的新 PO 與無法重新編譯或更改的現(xiàn)有對(duì)象(例如 )相結(jié)合,則依賴關(guān)系特別有用。

另一個(gè)常見的用例是隱藏與單側(cè) PO位于同一墨盒中的 PO 的關(guān)系,因?yàn)樗淮蛩闶乖?PO 的這種關(guān)系“公開”。在這種情況下,不能定義處理程序,并且調(diào)用 PO 的工廠以通過主鍵查找來定位相關(guān)實(shí)例。另一個(gè)用例是避免創(chuàng)建與海量數(shù)據(jù)的雙向關(guān)系。

以下 EDL 片段WarehousePO聲明了外鍵屬性addressID:

屬性地址ID:uuid;
索引(地址ID);

通常,依賴項(xiàng)將自定義 PO 與由 CAPI 接口表示的其他持久對(duì)象連接起來。

在我們的示例中,依賴項(xiàng)將自定義 POWarehousePO與標(biāo)準(zhǔn) Intershop 7 CAPI 接口連接起來Address。在對(duì)這樣的依賴項(xiàng)進(jìn)行建模時(shí),您必須提供管理器的符號(hào)名稱,該管理器提供對(duì) CAPI 接口后面對(duì)象的訪問。

代碼生成器使用提供的管理器來創(chuàng)建訪問器方法。

代碼生成器創(chuàng)建一個(gè) getter 方法,它允許您訪問特定源類實(shí)例所連接到的目標(biāo)類實(shí)例,以及一個(gè)用于將源實(shí)例分配給目標(biāo)實(shí)例的 setter 方法。例如,對(duì)于與 連接的依賴WarehousePO,Address生成如下方法:

公共地址getAddress ()
 {
     if (getAddressIDNull())
    {
        返回 空值;
    }
    ProfileMgr 工廠 = (ProfileMgr) NamingMgr.getInstance().lookupManager(ProfileMgr.REGISTRY_NAME);
    return (Address) factory.resolveAddressFromID(getAddressID());
}
public  void  setAddress (地址地址)
 {
     if (address == null )
    {
        setAddressIDNull( true );
    }
    別的
    {
        setAddressID(address.getUUID());
    }
}

3)多對(duì)多關(guān)系

多對(duì)多關(guān)系在 Intershop 7 應(yīng)用程序中很常見。例如,考慮產(chǎn)品和供應(yīng)商之間的關(guān)系:每個(gè)供應(yīng)商可能交付不止一種產(chǎn)品,而每種產(chǎn)品可能由不止一個(gè)供應(yīng)商交付。或者,組合產(chǎn)品以形成新產(chǎn)品(例如,計(jì)算機(jī)、鼠標(biāo)和監(jiān)視器)的產(chǎn)品捆綁包可以捆綁成完整的計(jì)算機(jī)包。這里也存在多對(duì)多關(guān)系,因?yàn)槊總€(gè)產(chǎn)品包可以包含許多不同的產(chǎn)品,并且每個(gè)產(chǎn)品都可以是不同產(chǎn)品包的一部分。

考慮下圖,它表達(dá)了產(chǎn)品和產(chǎn)品包(同樣是產(chǎn)品)之間的關(guān)系。通過 assignment class ,通過將(引用產(chǎn)品捆綁包的 UUID 的外鍵屬性)的值與(引用捆綁包中的產(chǎn)品的外鍵屬性)的值BundleAssignmentPO配對(duì),產(chǎn)品捆綁包與產(chǎn)品配對(duì)。兩個(gè)外鍵都映射到( ) 的主鍵。bundleIDproductIDProductUUID

(3)CAPI接口和持久對(duì)象

在許多用例中,持久對(duì)象實(shí)現(xiàn)了 CAPI 接口。該接口也可以建模或作為外部類型導(dǎo)入。以下 EDL 片段中顯示了在自定義 PO 之上建模的一組 CAPI 接口的示例:

導(dǎo)入 “enfinity:/demo/edl/com/intershop/demo/capi/Warehouse.edl”;
命名空間 com.intershop.demo.internal
{
  orm class  WarehousePO  extends  ExtensibleObjectPO  implements  Warehouse  { ... }
}
導(dǎo)入 “enfinity:/demo/edl/com/intershop/demo/capi/Stock.edl”;
命名空間 com.intershop.demo.internal
{
  oca orm class  StockPO 實(shí)現(xiàn) Stock  { ... }
}

PO WarehousePO 實(shí)現(xiàn)了接口Warehouse。

PO StockPO 實(shí)現(xiàn)了 Stock 接口。

接口是 capi 包的一部分,而實(shí)現(xiàn)類是內(nèi)部包的一部分。

請(qǐng)注意,PO 和接口使用不同的基類:

PO WarehousePO 繼承自抽象類com.intershop.beehive.core.capi.domain.ExtensibleObjectPO。

接口 Warehouse 擴(kuò)展了接口com.intershop.beehive.core.capi.domain.ExtensibleObject。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 成年视频网站免费观看 | 亚洲欧美精品综合中文字幕 | 伊人欧美 | 黄色福利网址 | 日韩高清影视 | 1204手机在线观看免费高清 | 国产毛片在线 | jyzzyzzz免费视频国产 | 欧美成人免费做真爱大片 | 另类异族videosex太狠了 | 在线视频不卡国产在线视频不卡 | 日本高清一区二区三区水蜜桃 | 欧洲视频一区 | 婷婷久久综合九色综合98 | 极品福利视频 | www.黄色网址.com | 伊人久久大香线蕉免费视频 | 嘿嘿午夜 | 免费看一级黄色录像 | 成年人免费在线视频网站 | 欧美精品三级在线 | 天天看天天干天天操 | 亚洲成在人色婷婷 | 亚洲欧美强伦一区二区另类 | 亚洲欧美色图 | 殴美黄色| 在线不卡日韩 | 亚洲宅男天堂a在线 | 免费高清在线影片一区 | 午夜叉 | 视频一区中文字幕 | 操久久久| 免费一级毛片 | 最近最好的中文字幕2019免费 | 亚洲大片在线观看 | 你懂得在线视频 | 天天摸夜夜添 | 在线视免费频观看韩国aaa | 欧美jizzhd精品欧美另类 | 五月婷婷精品 | 久久亚洲高清观看 |