SAP Hybris的Convertor, Populator, Facade和DTO這幾個概念是如何協同工作的
Hybris裡極其重要的概念。
之前的issue談到了Hybris MVC裡的M指的是DTO,JSP作為V顯示DTO的value,而DB層的Model和DTO的結構不一致。
那麼,資料從DB讀取之後,需要經過一個轉換,寫入到DTO。執行這個轉換的role,就是Convertor+Populator。
注:DTO是軟體設計裡一個common的概念,不是Hybris特有。定義見[wiki]( https:// en.wikipedia.org/wiki/D ata_transfer_object )
# Hybris官方定義
(1) Facade: A facade is a software design pattern that abstracts from an underlying implementation and offers an alternate, often reduced and less complex interface.
(2) DTO:Data Transfer Objects (DTOs) are objects created to only contain values and have no business logic except for getter and setter methods. Using DTOs, you can "combine" Hybris items - for example, this document adds price- and media-related data to a product object.
先看CRM。
line 17的方法從CDS view裡讀取persistent data:
這樣做類比。
可以看到CRM兩個layer之間的轉換非常light weight,僅僅是幾個賦值操作。
Hybris裡把這個賦值操作封裝到了兩個新的object裡:Converter和Populator。
為什麼要搞這麼麻煩:
(1) Data objects are constructed from Models or other Service Layer objects using Converters and Populators. The Data object is always created from a prototype-scoped spring bean that is defined in the beans.xml file for the extension.
(2) Converters create new instances of Data objects and call Populators to populate these.
即Converter負責建立Data object的例項(就是Java class的例項), Populator負責call這個例項的setter方法把業務資料寫入data obeject,這樣JSP繫結到這些data object的某個屬性的field就能顯示出來值。
既然Hybris基於Spring,那麼也要follow Spring的一些原則:
(1) No concrete Converters should be written, all converters should be Spring configured only and should use the AbstractConverter base class.
(2) No Populator should be called directly in code, Converters should be Spring injected and used.
(3) All conversion logic should exist in Populators and these should be well-encapsulated and independent.
# Populators
Populators break the conversion process of filling out a Data Object down into a pipeline of population tasks or steps. Each Populator carries out one or more related updates to the Data Object prototype. Each population step can invoke services or copy data from the source business object to the prototype Facade Data object. Facades always use a Converter to create a new instance of a Data Object prototype and then invoke Populators or other Converters to fulfill the task of building up the Data Object.
看具體的例子:
這個檔案位置:
"C:\Hybris\6.5.0.0.23546\hybris\bin\ext-accelerator\acceleratorservices\src\de\hybris\platform\acceleratorservices\payment\cybersource\converters\populators\ PaymentDataPopulator.java"
為什麼要單獨抽象這兩個object出來?和CRM Genil layer的實現一對比就清楚了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2672028/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP CRM WebClient UI和Hybris的controller是如何被呼叫的WebclientUIController
- 這幾個概念你可能還是沒搞清require、import和exportUIImportExport
- SAP Hybris的build callback和SAP ABAP的SGEN事務碼UI
- SAP Hybris的Master Tenant和Netweaver的System ClientASTNaNclient
- object-c 要理解協議的幾個重要概念Object協議
- SAP Netweaver和Hybris的資料庫層資料庫
- SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?
- 如何打造高效、安全、協同的指標管理體系?袋鼠雲是這樣做的指標
- SAP ABAP和Hybris Commerce的Sample資料
- SAP Hybris Commerce的JSP tag和SAP BSP tag的比較JS
- 幾個概念的區別,hdisk,hdiskpower,和lun
- 遠端工作的這幾年
- SAP 電商雲 Spartacus UI 的 proxy facade 是如何呼叫實際實現類UI
- CSS核心的幾個概念CSS
- 如何在 SAP Hybris WCMS cockpit 裡建立新的 websiteKPIWeb
- TCP和UDP是如何工作的TCPUDP
- SAP Hybris和ABAP Netweaver裡的DAO(Data access object)Object
- SAP ABAP Netweaver和Hybris Commerce的部署策略
- 淺析VO、DTO、DO、PO的概念、區別和用處
- 學習java多執行緒,這必須搞懂的這幾個概念Java執行緒
- GI 中新的基礎架構 --MDNS, gipc 和 gpnp 是如何協同工作的架構DNS
- 勒索軟體即服務(RaaS)是什麼?這個模型是如何工作的?模型
- 最近又完成幾個SAP on Exadata/Apps on Exastack的工作APPAST
- SAP ABAP, Fiori, Android和Hybris裡的非同步操作Android非同步
- 詳述 PO VO BO DTO DAO 和 POJO 的概念及區別POJO
- 這20個Docker Command,有幾個是你會的?Docker
- 飛項 | 這可能是打工人最需要的協同辦公工具!
- Amazon和Netflix的個性化推薦是如何工作的?
- 這幾天找工作的經歷
- SAP分析雲及協同計劃
- 高效協同企業雲盤為團隊協同帶來更高的工作效率
- 健康還是工作,這是個問題
- 網路時延的幾個概念
- 機器學習中比較重要的幾個概念機器學習
- 幾個基本的計算機概念計算機
- SAP Commerce(原Hybris)的訂單處理框架和SAP CRM One Order框架框架
- SAP 電商雲 Spartacus UI Proxy Facade 的一個實際例子UI
- CRM, C4C和Hybris的工作流簡介