千家信息网

SAP Hybris的Convertor, Populator, Facade和DTO这几个概念是怎么协同工作的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,SAP Hybris的Convertor, Populator, Facade和DTO这几个概念是怎么协同工作的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需
千家信息网最后更新 2026年11月02日SAP Hybris的Convertor, Populator, Facade和DTO这几个概念是怎么协同工作的

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/Data_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的实现一对比就清楚了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

概念 两个 实例 清楚 就是 数据 方法 帮助 工作 重要 一致 业务 之间 位置 例子 内容 原则 官方 对此 属性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技网 互联网的科技 互联网科技行业发展 科技制造互联网公司 易互联网科技有限公司 北京互联网络科技有限公司 云电互联网科技 米客互联网科技 撒么互联网科技公司 科技赋能互联网健康 互联网和高科技公司 深圳国际航运科技和互联网 互联网科技与管理 宁夏科技产业互联网案例 特约风豹互联网科技为什么扣费 徐州市互联网科技有限公司 本届互联网大会上的黑科技 互联网科技手抄报图片 优雇互联网科技有限公司 山东亿川互联网科技有限责任公司 上海喔噻互联网科技有限公司 湖北九亚互联网络科技有限公司 互联网科技公司做什么 厦门比较好的科技互联网公司 注册互联网科技公司经营范围大全 速维有品互联网信息科技(苏州)有限公司 互联网媒体平台算高科技产业 亳州好赞互联网科技有限公司 黑云互联网科技有限公司 北京瑞云互联网科技有限公司
0