Я не думаю, что есть решение одного размера. Если вам нужен общий код между решениями Java и .NET, то SP в SQL может быть лучшим выбором.
В прошлом я избегал использования каких-либо хранимых процедур, поскольку это усложняло развертывание в контролируемой среде. Конечно, вы можете обновить процедуру здесь или там простым способом, но в большой системе это может быть скорее проклятием, чем благословением.
Это зависит от того, насколько вы хотите контролировать свою среду. например Я предпочитаю быть уверенным, что UAT и производство одинаковы. то есть если он работает в UAT, он будет работать на производстве.
Если вас только двое, то это, вероятно, не имеет значения, вы сможете легко устранить любые несоответствия между средами (при условии, что у вас несколько сред)
Однако для более сложной системы с большим количеством сред, несколькими регионами, разработчиками в разных часовых поясах вам потребуется развертывание и откат новой системы как можно проще. Для развертывания Java достаточно просто изменить символическую ссылку и перезапустить службу.
Также довольно легко одновременно запустить две версии программного обеспечения, чтобы вы могли проводить тесты в последнюю минуту, легко переключаться и возвращать производственную среду в течение дня, а не ждать простоя. Возможно, есть простой способ сделать это в SQL, но я не встречал его.
В итоге: сначала согласитесь с вашими требованиями для всего сквозного процесса, а затем найдите подходящие решения, слишком часто люди начинают с решений, которые им удобны, сосредотачиваются на одном аспекте, чтобы оправдать свой выбор. Они часто обнаруживают очень поздно в проекте требование, которое является основной головной болью, которую слишком поздно менять, но это было бы просто, если бы ее рассматривали с самого начала.