dans mon dao, dans chaque méthode, quand j'appelle jdbctemplate, je devrais appeler avec le nouveau jdbctemplate(). droite? ou obtenir un instant statique de jdbctemplate et réutiliser? que diriez-vous de jpatemplate?jdbctemplate, jpatemplate
Répondre
dans mon dao, dans chaque méthode, quand j'appelle jdbctemplate, je devrais appeler avec new jdbctemplate(). droite?
non, vous ne le faites pas. le JdbcTemplace
doit être injecté dans votre DAO par configuration. Idem pour JpaTemplate
.
JdbcTemplate est threadsafe il est donc tout à fait sûr de partager une instance de celui-ci sur l'ensemble de votre application (bien que le partage que le DataSource utilisé pour initialiser le JdbcTemplate peut faire plus de sens). Généralement, une instance (non statique) par classe est suffisante, JdbcTemplate gère les problèmes de threads par lui-même et vous ne rencontrerez jamais de problèmes de concurrence au-delà des verrous de base de données.
Pour ajouter aux autres réponses, JdbcTemplate
est très léger, et son coût de construction est proche de zéro. Donc, si vous étiez pour en créer un nouveau à chaque opération, il n'y aurait probablement pas d'effets secondaires ou de dégradation significative des performances. La classe est simplement un wrapper comportemental autour de l'API JDBC. Par la même logique, il n'y a aucune raison de faire attention à ne pas avoir un seul objet JdbcTemplate
. Il devrait correspondre à n'importe quel design que vous choisissez d'utiliser.
La plupart des DAO dot instancient directement JdbcTemplate
. Au lieu de cela, ils sous-classent JdbcDaoSupport
, qui gère une instance JdbcTemplate
pour vous. Votre sous-classe appelle ensuite getJdbcTemplate()
pour récupérer l'instance. Si vous ne sous-classez pas JdbcDaoSupport, créez une instance de JdbcTemplate
lorsque votre bean DAO est initialisé et réutilisez-le.
La même chose s'applique aux autres classes de modèles DAO (Hibernate, JPA, etc.).
- 1. lors de l'utilisation de @transactional dois-je utiliser jpatemplate/hibernatetemplate?
- 2. jdbcTemplate se bloque sur une longue mise à jour
- 3. Construction d'une couche de données à l'aide de Spring JdbcTemplate
- 4. JdbcTemplate mise à jour par lots dans postgresql - date perd du temps?
- 5. Comment écrire des sous-classes StoredProcedure pour appeler des fonctions Oracle?
- 6. Ressort 2.5 dans un conteneur EJB
- 7. Aucune méthode Runnable Erreur de la classe de test de base
- 8. Comment améliorer la productivité de ma pile Flex/Java?
- 9. Assurer l'unicité d'une clé MySQL
@downvoter: veuillez expliquer votre downvote – dfa