2013-09-27 60 views
4

我是新來的Liferay service.xml的(服務構建器),任何人都可以請建議一些方法來生成現有數據庫Discussion on Liferay Website的service.xml中。我希望人們可能已經有所發展,或者Liferay爲此開發了一些插件。Liferay的Portlet的:如何從現有的數據庫

+2

你的使用情況是,你要編寫使用自己的Portlet使用服務構建一個包含您的業務數據的現有數據庫 - 是否正確?你需要什麼Service Builder提供的(自動生成的Web服務,把你的表放入Liferay數據庫等等),還是隻需要訪問數據庫就可以使你的portlet工作?如果是後者,則不需要使用ServiceBuilder。 – npskirk

回答

3

我認爲在將Servicebuilder引入大型現有數據庫時沒有特別的用處:您可以將servicebuilder實體連接到「遺留數據源」或「遺留表」(這些創建良好搜索條件),但service.xml生成尚未完成AFAIK。

一些問題,這種方法是:

  • servicebuilder有大約在數據庫操作的某些假設。它的完成來封裝的Liferay運行在所有不同的數據庫,因此可能不會使用每個數據庫它可能
  • 最大範圍內。如果你有一個大現有的數據庫,你可能有很多現有的業務邏輯,以確保正確的數據放進去並離開數據庫。你甚至可以用存儲過程等
  • 工作,而你可以用存儲過程servicebuilder工作,你就必須引入自定義SQL來解決servicebuilder的假設。明確的外鍵關係等也是如此。

我的建議是在現有的業務邏輯上有一個合適的接口, Web服務,JSON,休息,無論什麼流行。然後在Liferay的portlet中使用這個接口。

另一種選擇可能是使現有的持久性代碼到Liferay的,只是公開服務而不使用的Servicebuilder的持久性功能。爲此,您只需定義空的<entity>塊(帶有名稱等)。這將產生相應的DoSomethingLocalService,但省略了持久性的實現 - 你可以在這些服務連線現有的代碼。

+0

很多這個問題的答案 – yannicuLar

+0

謝謝奧拉夫的回答 –

1

沒有做過但據我所知。由於Liferay直接不支持DB的所有數據屬性,如外鍵,一對一映射等,因此創建這種反思工程是一項挑戰。但你可以試試看。

+0

即使他們將J2EE應用程序遷移到liferay portlet,他們如何忽略這一點。 –

+1

他們不推薦J2EE應用程序遷移到Liferay。門戶和企業應用程序的實際概念是不同的。與企業門戶網站相比,Liferay還有一些不足之處,但它們正在對您的查詢進行升級和快速響應。這可能是在他們的管道中,但是當我大約8個月前參加過訓練時,他們沒有聽到他們的任何消息。 –

1

Service Builder通常是創建相對較小的數據庫和簡單的業務邏輯的一個很好的功能,同時還爲您提供了在部署portlet時自動生成表以及查找(通過X屬性搜索)沒有努力。如果數據庫出現這種情況,從頭開始創建一個新的service.xml會容易得多。除此之外,我認爲在Liferay的Service Builder中有一個擴展數據庫將會帶來更多的問題和緩慢的開發,同時你要實現一個複雜的業務邏輯,創建自定義查找器,無論何時需要查詢表連接等等。因此,我認爲將數據庫轉換爲Service Builder不可用。

換句話說,如果你的數據庫是太大,它寫在service.xml中,你不應該擺在首位