Sono un principiante di Spring3.x, sto imparando il supporto DAO di primavera. Voglio sapere la differenza tra NamedParameterJdbcTemplate e JdbcTemplate. Qual è il migliore per mezzo delle prestazioni. E quando andare per NamedParameterJdbcTemplate e quando andare per JdbcTemplate. La tua risposta aiuterà molto i principianti come me.NamedParameterJdbcTemplate vs JdbcTemplate
risposta
Non c'è nessuna differenza misurabile. NamedParameterJdbcTemplate è una comodità che consente di utilizzare parametri con nome. Se siete davvero curiosi date un'occhiata al codice sorgente che è prontamente disponibile per il download. Trovo che leggere il codice sorgente mi dà più fiducia nelle risposte che ottengo sui forum.
Quando si utilizza JdbcTemplate, si specifica SQL con un segnaposto ?
per ogni parametro che si desidera sostituire nell'SQL. Quando si assegna i parametri nel codice si deve passare in argomenti in un array e si abitua nell'ordine in cui appaiono nella matrice, in questo modo:
Object[] args = new Object[] {"x", "y"};
String sql = "select * from foo where a = ? and b = ?";
jdbcTemplate.query(sql, args, resultSetExtractor);
modo il codice SQL che viene eseguito è select * from foo where a = 'x' and b = 'y'
.
NamedParameterJdbcTemplate consente di assegnare nomi ai segnaposto dei parametri e di passare in una mappa in modo che il modello possa corrispondere ai nomi delle mappe ai segnaposto. Quindi, il codice sarà simile:
String sql = "select * from foo where a = :mya and b = :myb";
Map<String, Object> argMap = new HashMap<String, Object>();
argMap.put("mya", "x");
argMap.put("myb", "y");
namedParameterJdbcTemplate.query(sql, argMap, resultSetExtractor);
generare lo stesso SQL come il primo esempio (e l'esecuzione della query è la parte ad alta intensità di tempo, le prestazioni del inserimento argomento è un non-problema.).
L'idea è che la corrispondenza degli argomenti per nome è meno soggetta a errori rispetto alla necessità di specificarli in un ordine particolare. In un'applicazione reale, in genere SQL viene archiviato in un file separato dal codice DAO e potrebbe essere facile ottenere accidentalmente i parametri nell'ordine errato.
- 1. usando Primavera JdbcTemplate - datasource iniettare vs jdbcTemplate
- 2. JPA vs Spring JdbcTemplate
- 3. Spring JdbcTemplate/NamedParameterJdbcTemplate che passa il valore null come valore di parametro
- 4. Vedere l'SQL sottostante in Spring JdbcTemplate?
- 5. JdbcTemplate IN Clausola per gli elementi a stringa
- 6. Test delle prestazioni tra QueryDSL SQL vs JDBCTemplate
- 7. JdbcTemplate e SimpleJdbcTemplate
- 8. Impegno su jdbcTemplate o DataSource
- 9. restituire un valore booleano - jdbcTemplate
- 10. JDBCTemplate per JavaEE e CDI
- 11. JdbcTemplate set di risultati multipli
- 12. JdbcTemplate: accesso campo MySQL VARBINARY as String
- 13. Inserimento di più righe utilizzando JdbcTemplate
- 14. Instantiating a JdbcTemplate da un java.sql.Connection
- 15. identità da sql insert tramite jdbctemplate
- 16. Come funziona esattamente JdbcTemplate con TransactionManager?
- 17. Cosa fa JdbcTemplate quando RowMapper restituisce null?
- 18. Come utilizzare in modo programmatico Spring's JdbcTemplate?
- 19. JdbcTemplate e dati di tipo inet
- 20. aggiornare una riga utilizzando spring jdbctemplate
- 21. Spring JdbcTemplate: come limitare le righe selezionate?
- 22. Come generare un elenco dinamico "in (...)" sql tramite Spring JdbcTemplate?
- 23. Spring Framework IllegalArgumentException 'dataSource' o 'jdbcTemplate' è richiesto JAVA
- 24. Spring JdbcTemplate Impossibile ottenere l'ID dell'inserimento da MySQL
- 25. com.sun.proxy errore $ proxy sulla creazione di pointcut su jdbcTemplate
- 26. JdbcTemplate queryForList valore restituito in caso di nessun risultato
- 27. Come riutilizzare la stessa connessione con un JdbcTemplate di Spring?
- 28. Programmazione Java - Spring e JDBCTemplate - Utilizzare query, queryForList o queryForRowSet?
- 29. JDBCTemplate con TransactionTemplate e Connection Pool, quale origine dati utilizzare
- 30. Come passare più parametri con nome a Spring JdbcTemplate?
Perché non leggi la javadoc? Non pensi che potrebbe spiegare qual è la differenza? Quando si tratta di prestazioni, il modo in cui la query viene creata ed eseguita non ha molta importanza. Ciò che conta è la query stessa. –