Liferay Portlet:如何从现有数据库生成service.xml(服务构建器)

时间:2013-09-27 09:48:04

标签: liferay liferay-6

我是liferay的新手,任何人都可以建议一些方法来为现有数据库Discussion on Liferay Website生成service.xml。我希望人们可能已经开发了一些方法或者liferay为此开发了一些插件。

4 个答案:

答案 0 :(得分:3)

我认为将servicebuilder引入大型现有数据库并没有特别的用途:您可以将servicebuilder实体连接到“遗留数据源”或“遗留表”(那些构成良好的搜索术语)但是service.xml生成尚未完成AFAIK。

这种方法的一些问题是:

  • servicebuilder对数据库中的操作有一些假设。它完成了封装Liferay运行的所有不同数据库,因此可能无法尽可能全面地使用每个数据库
  • 如果您有一个大型现有数据库,您可能有很多现有的业务逻辑,以确保正确的数据进出数据库。您甚至可以使用存储过程等。
  • 虽然您可以使servicebuilder使用存储过程,但您必须引入自定义sql来解决servicebuilder的假设。明确的外键关系等同样如此。

我的建议是在现有的业务逻辑上建立适当的接口,例如: Webservice,JSON,休息,什么是流行的。然后在Liferay的portlet中使用此接口。

另一种选择可能是将现有的持久性代码引入Liferay,只是在不使用Servicebuilder的持久性功能的情况下公开服务。为此,您只需定义空<entity>块(带名称等)。这将生成相应的DoSomethingLocalService,但省略持久性实现 - 您可以在这些服务中连接现有代码。

答案 1 :(得分:1)

您可以通过以下链接了解liferay中的服务构建器

https://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/service-build-2

以下链接还有示例服务构建器portlet

https://www.liferay.com/community/forums/-/message_boards/message/17609606

希望它有帮助!

答案 2 :(得分:1)

尚未完成AFAIK。由于Liferay不直接支持DB的所有数据属性,如外键,一对一映射等,因此创建一个崇敬的工程是一个挑战。但你可以尝试一下。

答案 3 :(得分:1)

Service Builder通常是一个很好的功能,可以创建相对较小的数据库和简单的业务逻辑,同时为您提供以下优势:在部署portlet时自动生成表,并具有查找器(通过X属性搜索)不费吹灰之力。如果您的数据库就是这种情况,那么从头开始创建新的service.xml将会容易得多。

除此之外,我认为在Liferay的Service Builder中使用扩展数据库会在实现复杂业务逻辑时引入更多问题并减缓开发,每当需要查询表连接时创建自定义Finder等等上。因此,对我来说,将数据库转换为Service Builder似乎很正常。

换句话说,如果您的数据库太大而无法在service.xml中编写它,那么您不应该首先使用Service Builder