Является ли ресурс единой базы данных REST хорошей идеей? - PullRequest
1 голос
/ 24 августа 2011

Вот моя ситуация. У меня есть класс с именем someDao, который содержит всю мою логику для запроса таблицы.

Затем у меня также есть что-то SomeDaoResource, которое является ресурсом API Джерси, но также и Singleton, и создает экземпляр объекта SomeDao с помощью Spring (то есть, я внедряю источник данных в кое-что Dao).

Затем у меня есть API-интерфейс businessLogicResource, который выполняет:

кое-что.

У меня вопрос, это считается хорошим дизайном? Моя главная проблема заключается в том, что каждый раз, когда кто-то отправляет HTTP-запрос в мой businessLogicResource, если someDaoResource не был синглтоном (или статическим?), То это создавало бы новый экземплярthingDao и открывало новое соединение, которое требует пока делать.

Любые предложения приветствуются.

PS - у меня также есть пул соединений c3p0.

1 Ответ

4 голосов
/ 25 августа 2011

Наиболее распространенной практикой является использование объектов DAO в качестве одиночных синглов. Вместо открытия и закрытия соединения они заимствуют одно из пула, а затем возвращают его, когда все готово. Вы можете ограничить максимальное количество подключений в пуле.

Наличие в веб-приложении чего-либо statefull и синглтона обычно является плохой идеей. Это может вызвать всевозможные конфликты чтения / записи или блокировку потока. Этот подход также убивает любую возможность распространения вашего приложения на несколько серверов, что нарушает одно из архитектурных ограничений REST.

...