2016-01-27 150 views
4

hybris商務套件中的Jalo層和服務層有什麼區別?如果有人能夠舉一個例子,我會很感激。我知道Jalo圖層已被棄用,但如果我必須指定在我的平臺中使用哪個圖層,那麼我將在哪裏告訴hybris或我將如何告訴hybris使用特定圖層?jalo層vs服務層

回答

3

在過去,持久性和業務邏輯寫在Jalo Layer中。引入服務層後,Jalo Layer中的現有業務邏輯即被移至服務層。有了這個,遷移到服務層的第一個目標就是所有Jalo相關的類都不應該包含任何代碼。 由於Jalo Layer不再包含業務邏輯,未來公共API將會小得多。它主要包括查詢靈活搜索的方法和保存和刪除數據的通用方法。此功能已通過適配器服務(如FlexibleSearchService和ModelService)在服務層中提供。在這種情況下,不再鼓勵對Jalo圖層的任何訪問。第二個目標是消除服務層現有類中的所有Jalo訪問。

來源: 訪問https://wiki.hybris.com/pages/viewpage.action?spaceKey=release5&title=Transitioning+to+the+ServiceLayer

9

我想,如果你對於這兩個相當不錯的hybris維基閱讀起來也最好:

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的Productjaloclass="de.hybris.platform.jalo.product.Product"聲明。 該平臺自動創建相應的服務層類(總是被稱爲*Model.java,所以例如de.hybris.platform.core.model.product.ProductModel, jalo層的一個侷限性是,例如,如果您想要在某個屬性中使用您自己的擴展中的某個擴展Product項類型,創建的屬性不會在0123alojalo類中(因爲它駐留在平臺中並且只創建一次),而是在您的擴展管理器類中可用,這有點不直觀且麻煩。服務層創建它的所有屬性模型類只有在分析和合並所有註冊的擴展後才能在實際的ProductModel類中添加該屬性。 還有很多不同之處,所以如果你有更具體的問題隨時問他們:)

0

在第一個Hybris版本中,邏輯通過Jalo(雅加達邏輯)層附加到生成的項目類型類,以便更靈活Hybris現在將所有內容都移動到服務層的更靈活的方法(尚未完成,促銷是傳統Jalo圖層的一個很好的例子)。