2009-08-14 2 views
1

в моем dao, в каждом методе, когда я вызываю jdbctemplate, я должен позвонить с новым jdbctemplate(). правильно? или получить один статический момент jdbctemplate и повторное использование? как насчет jpatemplate?jdbctemplate, jpatemplate

ответ

1

в моем dao, в каждом методе, когда я вызываю jdbctemplate, я должен позвонить с новым jdbctemplate(). правильно?

нет, у вас нет. JdbcTemplace следует вводить в DAO по конфигурации. То же самое для JpaTemplate.

+0

@downvoter: объясните, пожалуйста, ваше нижестоящее – dfa

1

JdbcTemplate является поточно так это совершенно безопасно использовать один экземпляр, по всей заявке (хотя только разделяя DataSource, используемый для инициализации в JdbcTemplate может иметь больше смысла). Как правило, одного (нестатического) экземпляра для каждого класса достаточно, JdbcTemplate обрабатывает проблемы с потоками, и вы никогда не столкнетесь с проблемами параллелизма с ним за пределами блокировок базы данных.

2

Чтобы добавить к другим ответам, JdbcTemplate очень легкий, а его стоимость строительства близка к нулю. Так что если вы были, чтобы создать новый на каждой операции, вероятно, не будет никаких побочных эффектов или значимой деградации производительности. Класс - это всего лишь поведенческая оболочка вокруг API JDBC. По той же логике нет оснований быть осторожным в том, чтобы убедиться, что у вас есть только один объект JdbcTemplate. Он должен соответствовать любому дизайну, который вы решите использовать.

Большинство DAOs делают точечный экземпляр JdbcTemplate напрямую. Вместо этого они подкласса JdbcDaoSupport, которые управляют экземпляром JdbcTemplate для вас. Затем ваш подкласс вызывает getJdbcTemplate(), чтобы получить экземпляр. Если вы не подклассифицируете JdbcDaoSupport, тогда создайте экземпляр JdbcTemplate, когда ваш DAO-компонент инициализируется и повторно использует его.

То же самое относится к другим классам шаблонов DAO (Hibernate, JPA и т. Д.).