Кажется, что всякий раз, когда вы говорите о чем-либо, связанном с J2EE - всегда есть целая куча предположений за сценой - которые люди предполагают так или иначе - что затем приводит к путанице. (Я, наверное, тоже мог бы прояснить вопрос.)
Если (а) мы хотим использовать транзакции, управляемые контейнером, в строгом смысле через спецификацию EJB, то
Фасады сессий - хорошая идея, поскольку они абстрагируют низкоуровневые транзакции базы данных, чтобы обеспечить управление транзакциями приложений более высокого уровня.
Если предположить (б), что вы имеете в виду общую архитектурную концепцию фасада сеанса - тогда
Хорошей идеей является разделение услуг и потребителей и обеспечение дружественного интерфейса. Информатика решила много проблем, «добавив дополнительный слой косвенности».
Род Джонсон (Rod Johnson) пишет: «SLSB с удаленными интерфейсами обеспечивают очень хорошее решение для распределенных приложений, построенных на основе RMI. Однако это требование меньшинства. Опыт показывает, что мы не хотим использовать распределенную архитектуру, если этого не требуют требования. Мы по-прежнему можем обслуживать удаленных клиентов, если необходимо, внедряя удаленный фасад поверх хорошей совместно расположенной объектной модели ». (Джонсон, R "Разработка J2EE без EJB" стр. 119.)
Предполагая (c), что вы рассматриваете спецификацию EJB (и, в частности, компонент фасада сеанса) как упадок в ландшафте хорошего дизайна, тогда:
Род Джонсон пишет
«В общем, не так много причин, по которым вы бы вообще использовали локальную SLSB в приложении Spring, поскольку Spring обеспечивает более способное декларативное управление транзакциями, чем EJB, а CMT обычно является основной мотивацией для использования локальных SLSB. Поэтому вам может не понадобиться Слой EJB вообще. "http://forum.springframework.org/showthread.php?t=18155
В среде, где производительность и масштабируемость веб-сервера являются главными проблемами - а стоимость является проблемой - тогда архитектура фасада сеанса выглядит менее привлекательной - проще общаться напрямую с базой данных (хотя это больше касается многоуровневое.)