2012-08-09 22 views
0

我們的應用程序有非常大的數據,我們希望在數據庫層(存儲過程)中執行我們的業務邏輯(聚合) 。在數據庫(存儲過程)中保留生命週期的業務邏輯或不保留

Liferay傾向於在業務層(具有多層分層體系結構)中具有業務邏輯。

如果我們想要使用商業邏輯的存儲過程,會產生什麼影響?

由於Liferay也使用Hibernate,在這種情況下,如果在這種情況下沒有增加太多價值,是否有辦法繞過hibernate?

回答

1

是有原因的Liferay做它的業務邏輯在應用程序代碼級(高級):

  1. 這樣的門戶網站成爲數據庫不可知論者,因此可以在不考慮底層數據庫的情況下進行部署。
  2. 並非所有的數據庫都支持存儲過程。所以爲了支持多個數據庫,代碼不能在存儲過程中。
  3. 門戶主要是內容驅動的,並沒有太多的數據密集。

可能還有其他原因,或者可能有其他一些哲學,他們可能會遵循,但這是我現在可以想到的。

所以,現在的問題是否可以使用它?

由於frant.hartm說,它完全取決於你。這取決於您的需求以及您計劃如何設計,維護和增強您的架構。

另外值得警惕的是:建議不要直接從存儲過程中使用Liferay的數據庫表,因爲Liferay可能會更改新版本的數據庫體系結構。所以它可能會使您的升級過程複雜化。

我覺得這個問題是不是這樣的Liferay相關,因此這裏有一些鏈接,可以幫助你做出決定:

  1. Arguments for/against Business Logic in stored procedures。前幾個答案是這方面的好的指針。
  2. Whether to put the business logic in Stored Procedure or Not?
  3. Code generators vs. ORMs vs. Stored Procedures

有沒有辦法通過通在這種情況下冬眠,如果它不能在這種情況下,增加多少價值。

如果它沒有增加值,那麼你可以使用JDBC來爲你自己的定製portlet傳遞hibernate。沒有什麼特別的配置使用JDBC,它是一樣的好東西:-)

希望這導致你在一個積極的方向。

1

Liferay在應用程序代碼中執行其業務邏輯並不意味着您必須這樣做,您的應用程序的體系結構完全取決於您。

(這假定您的應用程序數據不引用Liferay的數據)