Клиент-сервер, или с включением базы данных, 3-уровневая архитектура сама по себе является шаблоном проектирования. Вопрос скорее в том, какие технологии следует использовать в коммуникации. Есть много вариантов, например, HTTP, TCP, UDP, JMS, XMLRPC, RMI, CORBA, C RPC или флэш-накопители, переносимые почтовыми голубями. В общем, рекомендуется
- используйте технологию, которая имеет инструментарий для определения формата вашего сообщения / данных, например SOAP (WSDL), CORBA (IDL), XML (XSD, Relax NG, Schematron, ..) через JMS / HTTP / ....
- выберите текстовый формат (XML, JSON, ..) вместо двоичного (RMI, CORBA, ..), если производительность не является серьезной проблемой. Текстовые форматы легче понять программистам, пишущим следующую версию, или новому клиенту. Также легче отлаживать или проверять такой интерфейс.
- используйте открытую стандартную технологию, не изобретайте колесо заново.
- выберите базовый транспорт, соответствующий вашей модели связи. Например. JMS хорошо подходит для связи «забыл и забыл», а HTTP хорошо подходит для синхронного запроса-ответа.
- Имейте в виду архитектуру более высокого уровня. Например. если ваш сервер (сервис) является одним из многих, обслуживаемых одним и тем же ИТ-отделом, рекомендуется использовать одну и ту же коммуникационную технологию для всех из них (см. также SOA).
Что касается вашего вопроса о зависимости от выбранной структуры постоянства, я думаю, что нет ни одного. Ваш выбор использования, например Hibernate не применяет и не исключает какие-либо коммуникационные технологии клиент-сервер.