One
One

Reputation: 307

Creating Organization using Liferay API

Which of the following util is suitable for creating an organization using Liferay API.

i) OrganizationUtil
ii) OrganizationServiceUtil
iii) OrganizationLocalServiceUtil

Basically, I want to know the difference between these three.

Upvotes: 3

Views: 1112

Answers (1)

Prakash K
Prakash K

Reputation: 11698

i) OrganizationUtil: com.liferay.portal.service.persistence.OrganizationUtil

The classes from the persistence layer directly talk to the Database and hence are good to be used from the service layer and also if you care about transaction.

Following are the words from the documentation:

The persistence utility for the organization service. This utility wraps OrganizationPersistenceImpl and provides direct access to the database for CRUD operations. This utility should only be used by the service layer, as it must operate within a transaction. Never access this utility in a JSP, controller, model, or other front-end class.


ii) OrganizationServiceUtil: com.liferay.portal.service.OrganizationServiceUtil

It can be called from any layer as such. This class also does permission checks (based on Permissions given in Liferay) which may be useful in some cases. This can also be used through web-service.

Well lets see what liferay's documentation has to say:

The utility for the organization remote service. This utility wraps com.liferay.portal.service.impl.OrganizationServiceImpl and is the primary access point for service operations in application layer code running on a remote server.

This is a remote service. Methods of this service are expected to have security checks based on the propagated JAAS credentials because this service can be accessed remotely.


iii) OrganizationLocalServiceUtil: com.liferay.portal.service.OrganizationLocalServiceUtil

This can also be used if you don't want any permission checks. The OrganizationServiceUtil ultimately makes a call to the localService layer.

Liferay's Documentation:

The utility for the organization local service. This utility wraps com.liferay.portal.service.impl.OrganizationLocalServiceImpl and is the primary access point for service operations in application layer code running on the local server.

This is a local service. Methods of this service will not have security checks based on the propagated JAAS credentials because this service can only be accessed from within the same VM.

Conclusion

  1. Use OrganizationUtil if you care about transaction i.e. have to update multiple tables in a transaction then use this.
  2. Use OrganizationServiceUtil if you creating Organization outside liferay or if you need permission checks & you don't care about transaction (i.e. transaction with your custom code)
  3. Use OrganizationLocalServiceUtil if you are not using a web-service and you don't care about transaction or permissions.

Hope this gives you a fair idea. Let me know if it is still unclear.

Upvotes: 4

Related Questions