какой объем обычно должен иметь DAO - PullRequest
1 голос
/ 14 октября 2008

не подлежит сомнению, что дао не будет удерживать никакое состояние.

однако для простоты доступа к классу лучше использовать прототип (= каждый раз новый) или синглтон?

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

Уточнение: этот вопрос в центре внимания, если существует общее соглашение о масштабах даос.

Ответы [ 3 ]

3 голосов
/ 14 октября 2008

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

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

2 голосов
/ 18 мая 2010

Или используйте прототип в сочетании с пулом, как описано здесь:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop-api.html#aop-ts-pool

ИЛИ здесь:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/classic-aop-spring.html#classic-aop-ts-pool

РЕДАКТИРОВАТЬ: очевидно, я предполагаю, что здесь используется весна. В противном случае я прошу прощения

0 голосов
/ 10 декабря 2008

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

...