в моем dao, в каждом методе, когда я вызываю jdbctemplate, я должен позвонить с новым jdbctemplate(). правильно? или получить один статический момент jdbctemplate и повторное использование? как насчет jpatemplate?jdbctemplate, jpatemplate
ответ
в моем dao, в каждом методе, когда я вызываю jdbctemplate, я должен позвонить с новым jdbctemplate(). правильно?
нет, у вас нет. JdbcTemplace
следует вводить в DAO по конфигурации. То же самое для JpaTemplate
.
JdbcTemplate является поточно так это совершенно безопасно использовать один экземпляр, по всей заявке (хотя только разделяя DataSource, используемый для инициализации в JdbcTemplate может иметь больше смысла). Как правило, одного (нестатического) экземпляра для каждого класса достаточно, JdbcTemplate обрабатывает проблемы с потоками, и вы никогда не столкнетесь с проблемами параллелизма с ним за пределами блокировок базы данных.
Чтобы добавить к другим ответам, JdbcTemplate
очень легкий, а его стоимость строительства близка к нулю. Так что если вы были, чтобы создать новый на каждой операции, вероятно, не будет никаких побочных эффектов или значимой деградации производительности. Класс - это всего лишь поведенческая оболочка вокруг API JDBC. По той же логике нет оснований быть осторожным в том, чтобы убедиться, что у вас есть только один объект JdbcTemplate
. Он должен соответствовать любому дизайну, который вы решите использовать.
Большинство DAOs делают точечный экземпляр JdbcTemplate
напрямую. Вместо этого они подкласса JdbcDaoSupport
, которые управляют экземпляром JdbcTemplate
для вас. Затем ваш подкласс вызывает getJdbcTemplate()
, чтобы получить экземпляр. Если вы не подклассифицируете JdbcDaoSupport, тогда создайте экземпляр JdbcTemplate
, когда ваш DAO-компонент инициализируется и повторно использует его.
То же самое относится к другим классам шаблонов DAO (Hibernate, JPA и т. Д.).
@downvoter: объясните, пожалуйста, ваше нижестоящее – dfa