Сохранять бизнес-логику для liferay в базе данных (хранимые процедуры) или не хранить

Наше приложение имеет очень большие данные, и мы хотим выполнять нашу бизнес-логику (агрегирование) на уровне базы данных (хранимые процедуры).

Liferay предпочитает иметь бизнес-логику на бизнес-уровне (с многослойной архитектурой).

Каков эффект, если мы захотим использовать хранимые процедуры для бизнес-логики?

Поскольку Liferay также использует Hibernate, есть ли способ обойти спящий режим в этом случае, если он не добавляет большого значения в этом случае?


person dsr301    schedule 09.08.2012    source источник


Ответы (2)


Есть причины, по которым Liferay выполняет свою бизнес-логику на уровне кода приложения (высокий уровень):

  1. Таким образом, портал становится независимым от базы данных и, следовательно, может быть развернут, не задумываясь о базовой базе данных.
  2. Не все базы данных поддерживают хранимые процедуры. Таким образом, для поддержки нескольких баз данных код не может находиться в хранимой процедуре.
  3. Порталы в основном ориентированы на контент и не требуют большого объема данных.

Могут быть другие причины или может быть какая-то другая философия, которой они могут следовать, но это то, о чем я могу думать прямо сейчас.

Итак, теперь вопрос, можно ли его использовать или нет?

Как сказано в frant.hartm, это полностью зависит от вас. Это зависит от ваших требований и от того, как вы планируете проектировать, поддерживать и улучшать свою архитектуру.

Также в качестве предостережения: не рекомендуется использовать таблицы базы данных Liferay непосредственно из хранимых процедур, поскольку Liferay может изменить архитектуру базы данных для более новых версий. Так что это может усложнить процедуру обновления.

Я считаю, что этот вопрос не так уж связан с Liferay, поэтому вот несколько ссылок, которые могут помочь вам решить:

  1. Аргументы за / против Business Logic в хранимых процедурах. Первые несколько ответов - хорошие указатели в этом направлении.
  2. Добавлять бизнес-логику в хранимую процедуру или нет?
  3. Генераторы кода против ORM против хранимых процедур.

Есть ли способ обойти спящий режим в этом случае, если он не добавляет большого значения в этом случае.

Если это не добавляет ценности, то да, вы можете использовать JDBC для своего собственного портлета, минуя спящий режим. Для использования JDBC настраивать особо нечего, это все та же старая добрая вещь :-).

Надеюсь, это приведет вас в позитивном направлении.

person Prakash K    schedule 13.08.2012

Тот факт, что Liferay выполняет свою бизнес-логику в коде приложения, не означает, что вы должны делать то же самое, архитектура вашего приложения полностью зависит от вас.

(Это предполагает, что данные вашего приложения не ссылаются на данные Liferay)

person František Hartman    schedule 09.08.2012