Один DAO на поток или потокобезопасный DAO? - PullRequest
5 голосов
/ 04 января 2010

Мне интересно, есть ли одобренная практика в многопоточном приложении. Должен ли я иметь один DAO на поток или просто сделать один DAO потокобезопасным singleton.

Ответы [ 2 ]

4 голосов
/ 04 января 2010

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

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

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

0 голосов
/ 04 января 2010

Используйте подход, который лучше всего подходит для архитектуры вашего приложения, кроме случаев, когда:

1) Создание ваших объектов доступа к данным требует больших затрат, и в этом случае вам следует ориентироваться на многопоточный синглтон.

2) Ваши объекты поддерживают изменчивое состояние, как в шаблоне активной записи . (Состояние неизменной конфигурации DAO, например, пороговые значения времени ожидания, не учитывается.)

...