Hybris的数据模型或者说TYPE SYSTEM非常灵活。在过去的 4 年里,我一直在研究 Hybris,从来没有遇到过只要涉及建模就会失败的情况。类型系统是 Hybris ORM,其中所有 Java 对象都以 XML 格式定义,同时映射到数据库表和列。支持所有的 java 数据类型,也支持类型集合。类型系统独立于 DB 的选择,并且即使在 DB 更改时,也对 items.xml 几乎没有任何更改(或非常少的额外配置)。CLOB 例外,它需要数据库供应商特定的或等效的数据库列数据类型配置,同样在相同的 items.xml 中。
就 Hybris 关系而言,建模关联也很简单
- 1:1 -> 建模为 Object2 作为 Object1 的属性
- 1:n 或 n:1 -> 由具有源和目标属性的关系项建模
- n:m -> 由具有源和目标属性并在单独的数据库表下的关系项建模
现在回到产品,产品有两个层次结构,可能存在于多层次结构中。2 个基本层次结构是产品和产品变体。
让我们为服装产品建模,可能有 4 种产品:
- 产品本身是 SKU:BaseProduct
- 产品有颜色变体:BaseProduct -> ColorVariant
- 产品有尺寸变体:BaseProduct -> SizeVariant
- 产品具有颜色和尺寸变体:BaseProduct -> ColorVariant -> SizeVariant
所有产品属性都将保存在 BaseProduct 中,而 Variants 将仅保存不同的属性,例如颜色、尺寸和成本。
根据产品推断变体的类型,产品-变体层次结构路径将增长,简单且重复最少或无重复。
对于BaseProduct建模,唯一必须的属性是产品代码,其余的都是可选的,所以很方便。这有助于通过工作流运行丰富过程,并有助于非常灵活的基础实施,并增加特定要求的范围。
通过服务层服务和加速器对 GUI 的开箱即用支持是值得称道的,即使添加了自定义属性的负载,这也足够了,因为它是从 ITEM 驱动到 MODEL 然后是 DATA 转换。实现完全控制要从模型填充到数据的数据和数据段。
报告由基于 Jasper 报告的报告主控室驱动。使用 JOINS 和 UNIONS 定义灵活的搜索查询,甚至可以选择为报告属性值填充执行小型 Java 代码。
在我看来,Hybris 很好地涵盖了建模、转换、GUI 和报告。