- По умолчанию они являются синглетами (если они управляются Spring), если вы не настроили их иначе (из xml-конфигурации или с помощью аннотаций вы можете установить его с помощью @Scope).
- И да и нет.Да, это небезопасно в том смысле, что несколько потоков могут обращаться к нему и изменять его одновременно, и нет, потому что это зависит от типа данных, а String является неизменным (и, по крайней мере, считается поточно-ориентированным).Возможно, он взорвется, если два разных потока попытаются сохранить новую строку в переменной-члене в один и тот же момент.
- Да и снова нет.Если у DAO нет внутреннего состояния, да, я бы сказал, что это потокобезопасно, но объекты, с которыми он работает, могут не быть (хотя, если вы используете JPA-сущности, они должны быть).
- Впо крайней мере, в документации Hibernate говорится, что EntityManager не безопасен для потоков, но при использовании EntityManager, внедряемого Spring, это не должно вызывать проблем.
Форумы SpringSource: У меня естьискал ответы на тот же вопрос на форуме ... Похоже, что общее мнение заключается в том, что, хотя EntityManager не является потокобезопасным в соответствии со спецификациями JPA, EntityManager, внедренный Spring через прокси-сервер EntityManager, может быть.1016 * Hibernate: EntityManager - это недорогой, не поддерживающий потоки объект, который следует использовать один раз для одного бизнес-процесса, одной единицы работы и затем отбрасывать.EntityManager не получит JDBC-соединение (или источник данных), если в этом нет необходимости, поэтому вы можете безопасно открывать и закрывать EntityManager, даже если вы не уверены, что доступ к данным потребуется для обслуживания определенного запроса.