Я не могу говорить о других системах поколения CRUD, но могу рассказать вам о подходах Liferay.
Я бы выбрал гибридный подход.
Сначала я бы создал требуемыймодели данных, насколько я могу, с текущими требованиями в Liferay Service Builder и поддерживать их там в максимально возможной степени.Это потребует перестройки и повторного развертывания вашего плагина каждый раз, когда вы меняете модель данных, но значительно повышает производительность по сравнению со всеми другими упомянутыми вами подходами Liferay.В этом отношении Service Builder гораздо более жесткий и не может быть изменен с помощью графического интерфейса.
Однако в случае, если по какой-то причине вы не можете использовать Service Builder для переопределения своих моделей данных, и вам необходимо изменить некоторые аспекты этогочерез графический интерфейс вы также можете использовать Expandos для расширения моделей, созданных с помощью Service Builder.Итак, это лучшее из обоих миров.
С другой стороны, использование ECMS было бы специализированным случаем, и я бы использовал этот подход, только если есть определенное требование, которому он удовлетворяет (например, интеграция с ECMS).
С учетом сказанного, Liferay предоставляет вам множество различных способов создания вашего приложения.В конечном итоге это зависит от того, как вы собираетесь использовать свое приложение.