Jalo Layer与服务层

Ash*_*gga 5 hybris

什么是Hybris商务套件中Jalo层服务层之间的区别?如果有人可以举一个例子,我将非常感激.我知道Jalo层已经被弃用但是如果我必须指定在我的平台中使用哪个层,那么我将在哪里告诉Hybris或者我将如何告诉Hybris使用特定的层?

Seb*_*ian 11

我认为最好是阅读有关两者的相当好的hybris wiki:

Jalo:https://wiki.hybris.com/display/release5/Jalo+Layer

服务层:https://wiki.hybris.com/display/release5/ServiceLayer

你不必指定你使用的是哪一个(它们都在运行),如果你开始一个新项目,你基本上必须(或者至少真的应该!)专门使用服务层,因为Jalo会消失(所以他们在下一个主要版本之一中至少说了一段时间.简而言之,Jalo是旧的持久性机制,而引入服务层是为了解决jalo层具有的各种问题(性能/缓存,可扩展性等).

因此,如果你只是/大部分都在研究新项目,你可能不需要获得关于jalo层的太多知识,但如果你计划成为hybris顾问或者使用旧的传统hybris代码,你将不得不处理Jalo更多.

一个小例子:在您的items.xml文件(您声明数据模型的位置)中,您可以指定一个jaloclass属性,同时使平台为您创建Java类.例如:core-items.xml已Product声明jaloclass="de.hybris.platform.jalo.product.Product".平台自动也创建相应的服务层类(总是被调用*Model.java,例如de.hybris.platform.core.model.product.ProductModel.jalo层的一个限制是,例如,如果您想在某个属性的扩展中扩展Product项类型,则新创建的属性不会在Productjalo类(因为它驻留在平台中并且只创建一次),但是它将在您的扩展Manager类中可用,这有点不直观且繁琐.服务层仅在分析后创建其所有模型类并合并所有已注册的扩展,因此能够在实际的ProductModel类中添加该属性.还有更多的差异,所以如果你有更具体的问题,请随时问他们:)


Lho*_*Ben 4

过去,持久性和业务逻辑是在 Jalo 层中编写的。引入Service Layer后,Jalo Layer中现有的业务逻辑正在被转移到Service Layer。这样,迁移到服务层的首要目标是所有与 Jalo 相关的类不应包含任何代码。由于 Jalo 层不应再包含业务逻辑,因此未来公共 API 将会小得多。它将主要包括查询灵活搜索的方法以及保存和删除数据的通用方法。此功能已在服务层中由 FlexibleSearchService 和 ModelService 等适配器服务提供。在这种情况下,不再鼓励对 Jalo 层的任何访问。第二个目标是消除服务层现有类中的所有 Jalo 访问。

来源:访问https://wiki.hybris.com/pages/viewpage.action?spaceKey=release5&title=Transitioning+to+the+ServiceLayer