3

以下哪个工具适合使用 Liferay API 创建组织。

i) OrganizationUtil
ii) OrganizationServiceUtil
iii)OrganizationLocalServiceUtil

基本上,我想知道这三个之间的区别。

4

1 回答 1

4

i) 组织用途:com.liferay.portal.service.persistence.OrganizationUtil

持久层中的类直接与数据库对话,因此很适合从服务层使用,如果您关心事务,也可以使用。

以下是文档中的文字:

组织服务的持久性实用程序。此实用程序包装了 OrganizationPersistenceImpl 并提供对数据库的直接访问以进行 CRUD 操作。此实用程序只能由服务层使用,因为它必须在事务中运行。切勿在 JSP、控制器、模型或其他前端类中访问此实用程序。


ii) 组织服务工具:com.liferay.portal.service.OrganizationServiceUtil

它可以从任何层调用。此类还进行权限检查(基于 Liferay 中给出的权限),这在某些情况下可能很有用。这也可以通过网络服务使用。

那么让我们看看 liferay 的文档是怎么说的:

组织远程服务的实用程序。该实用程序包装了 com.liferay.portal.service.impl.OrganizationServiceImpl 并且是在远程服务器上运行的应用程序层代码中服务操作的主要访问点。

这是一个远程服务。由于可以远程访问此服务,因此该服务的方法应根据传播的 JAAS 凭证进行安全检查。


iii) 组织本地服务实用程序:com.liferay.portal.service.OrganizationLocalServiceUtil

如果您不想进行任何权限检查,也可以使用此方法。OrganizationServiceUtil最终调用该层localService

Liferay 的文档

组织本地服务的实用程序。该实用程序包装了 com.liferay.portal.service.impl.OrganizationLocalServiceImpl 并且是在本地服务器上运行的应用程序层代码中服务操作的主要访问点。

这是本地服务。此服务的方法不会基于传播的 JAAS 凭据进行安全检查,因为只能从同一 VM 内访问此服务。

结论

  1. 如果您关心事务,即必须更新事务中的多个表,请使用 OrganizationUtil,然后使用它。
  2. 如果您在 liferay 之外创建组织或者如果您需要权限检查并且您不关心事务(即使用您的自定义代码进行事务),请使用 OrganizationServiceUtil
  3. 如果您不使用 Web 服务并且不关心事务或权限,请使用 OrganizationLocalServiceUtil。

希望这能给你一个公平的想法。如果还不清楚,请告诉我。

于 2012-12-13T14:47:47.613 回答