Liferay Portlet:如何从现有数据库生成service.xml(service builder)

Liferay Portlet:如何从现有数据库生成service.xml(service builder),liferay,liferay-6,Liferay,Liferay 6,我是liferay的新手,请任何人提出一些方法来为现有数据库生成service.xml。我希望人们已经开发了一些方法,或者liferay已经为此开发了一些插件。您可以通过下面的链接了解liferay中的Service Builder 下面的链接还有示例服务生成器portlet 希望有帮助 还没做完,好的。由于Liferay直接不支持DB的所有数据属性,如外键、一对n映射等,因此创建混响工程是一个挑战。但是您可以试一试。我看不出将servicebuilder引入大型现有数据库有什么特别的用处:

我是liferay的新手,请任何人提出一些方法来为现有数据库生成service.xml。我希望人们已经开发了一些方法,或者liferay已经为此开发了一些插件。

您可以通过下面的链接了解liferay中的Service Builder

下面的链接还有示例服务生成器portlet


希望有帮助

还没做完,好的。由于Liferay直接不支持DB的所有数据属性,如外键、一对n映射等,因此创建混响工程是一个挑战。但是您可以试一试。

我看不出将servicebuilder引入大型现有数据库有什么特别的用处:您可以将servicebuilder实体连接到“遗留数据源”或“遗留表”(这些表是很好的搜索术语),但service.xml的生成还没有完成

这种方法的一些问题是:

  • servicebuilder对数据库中的操作有一定的假设。这样做是为了封装Liferay运行的所有不同数据库,因此可能无法最大限度地使用每个数据库
  • 如果您有一个大型的现有数据库,那么您可能有很多现有的业务逻辑来确保正确的数据进出数据库。您甚至可以使用存储过程等
  • 虽然可以让servicebuilder使用存储过程,但必须引入自定义sql来解决servicebuilder的假设。显式外键关系等也是如此
我的建议是在现有的业务逻辑上有一个合适的接口,例如Webservice、JSON、Rest等。然后在Liferay的portlet中使用此接口


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

服务生成器通常是创建相对较小的数据库和简单的业务逻辑的好功能,这样做的好处是,当您部署portlet时,您的表将自动生成,并且不费吹灰之力就拥有了finder(按X属性搜索)。如果您的数据库是这种情况,那么从头开始创建一个新的service.xml会容易得多

除此之外,我认为在Liferay的Service Builder中使用扩展数据库会带来更多问题,并且在实现复杂的业务逻辑、需要查询表连接时创建自定义查找程序等过程中会减慢开发速度。因此,在我看来,数据库到ServiceBuilder的转换不可用是很正常的


换句话说,如果您的数据库太大,无法将其写入service.xml中,那么您首先不应该使用service Builder

即使在他们将J2EE应用程序迁移到liferay Portlet时,他们如何可以忽略这一点。他们不会将J2EE应用程序迁移到liferay。门户和企业应用程序的实际概念是不同的。与企业门户相比,Liferay仍有一些方面落后,但它们正在升级,并对您的查询做出非常快速的响应。这可能已经在他们的管道中,但在我8个月前参加培训时,他们的团队没有任何消息。您的用例是您想编写自己的Portlet,使用保存业务数据的现有数据库,对吗?您需要ServiceBuilder提供的服务(自动生成的Web服务、将表放入Liferay数据库等),还是只需要访问数据库就可以让portlet工作?如果是后者,则不需要特别使用ServiceBuilder。