Ich bin ein Anfänger zu Spring3.x, ich lerne Frühling DAO Unterstützung. Ich möchte den Unterschied zwischen NamedParameterJdbcTemplate und JdbcTemplate wissen. Welche ist die beste Leistung? Und wann für NamedParameterJdbcTemplate gehen und wenn JdbcTemplate zu gehen. Ihre Antwort wird den Anfängern wie mir sehr helfen.NamedParameterJdbcTemplate vs JdbcTemplate
Antwort
Es gibt keine messbare Unterschiedsleistung. Das NamedParameterJdbcTemplate ist eine praktische Funktion, mit der Sie benannte Parameter verwenden können. Wenn Sie wirklich neugierig sind, werfen Sie einen Blick auf den Quellcode, der zum Download verfügbar ist. Ich finde, dass das Lesen des Quellcodes mir mehr Vertrauen in die Antworten gibt, die ich in den Foren bekomme.
Wenn Sie JdbcTemplate verwenden, geben Sie SQL mit einem ?
Platzhalter für jeden Parameter, den Sie in SQL ersetzen möchten. Wenn Sie Parameter in dem Code zuordnen müssen Sie in Argumente in einem Array übergeben und sie in der Reihenfolge zu gewöhnen, in der sie in der Anordnung erscheinen, wie folgt aus:
Object[] args = new Object[] {"x", "y"};
String sql = "select * from foo where a = ? and b = ?";
jdbcTemplate.query(sql, args, resultSetExtractor);
so die SQL, die ausgeführt wird select * from foo where a = 'x' and b = 'y'
ist.
Mit NamedParameterJdbcTemplate können Sie den Parameterplatzhaltern Namen zuweisen und eine Map übergeben, damit die Vorlage die Map-Namen den Platzhaltern zuordnen kann. So Ihr Code würde wie folgt aussehen:
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);
die gleiche SQL als das erste Beispiel zu erzeugen (und Ausführen der Abfrage der zeitintensivste Teil ist, die Leistung des Arguments Einfügen ist kein Thema.).
Die Idee ist, dass die Übereinstimmung der Argumente nach Namen weniger fehleranfällig ist, als sie in einer bestimmten Reihenfolge angeben zu müssen. In einer realen Anwendung wird SQL typischerweise in einer separaten Datei aus dem DAO-Code gespeichert, und es kann leicht passieren, dass die Parameter versehentlich in der falschen Reihenfolge abgerufen werden.
Irgendein anderer Unterschied ??? – Sarma
@Sarma: das ist keine sehr spezifische Frage. Wenn Sie mehr Details wünschen, können Sie den Quellcode auschecken. –
ist es möglich, NamedParameterJdbcTemplate und JdbcTemplate mit der gleichen Datenquelle zu verwenden? Werden sie sich gegenseitig stören? – MaxG
- 1. Java spring autowires Jdbctemplate aber nicht NamedParameterJdbcTemplate
- 2. Spring jdbcTemplate vs PreparedStatement. Leistungsunterschied
- 3. mit Spring JdbcTemplate - Injizieren Datenquelle vs jdbcTemplate
- 4. jdbctemplate, jpatemplate
- 5. Das zugrunde liegende SQL in der Spring JdbcTemplate sehen?
- 6. Frühling JDBCTemplate Ausnahme
- 7. JdbcTemplate mehrere Ergebnissätze
- 8. Paged Abfragen mit JdbcTemplate
- 9. Frühling jdbcTemplate Unit-Tests
- 10. Spring jdbcTemplate Junit
- 11. Spring's JdbcTemplate und Transaktionen
- 12. eine boolean zurückgeben - jdbcTemplate
- 13. JdbcTemplate und inet Datentyp
- 14. Seltsame Nullzeiger mit jdbcTemplate
- 15. jdbcTemplate batchUpdate Problem
- 16. Wie programmiere ich Spring JdbcTemplate?
- 17. JDBCTemplate gibt Null-Zeiger-Ausnahme?
- 18. Spring JDBCTemplate-Tabellensperrung mit MySQL
- 19. JDBCTemplate für JavaEE und CDI
- 20. Commit on jdbcTemplate oder DataSource
- 21. jdbcTemplate hängt am langen Update
- 22. Verwenden vorbereiteter Anweisungen mit JDBCTemplate
- 23. "Invalid Spaltentyp" excecption Erste, während NamedParameterJDBCTemplate zum Einsetzen unter Verwendung
- 24. Leistung und Einschränkungsprobleme zwischen update() und batchUpdate() Methoden von NamedParameterJdbcTemplate
- 25. JDBCTemplate queryForMap zum Abrufen mehrerer Zeilen
- 26. Identität von SQL einfügen über JDBCtemplate
- 27. Fügen Sie das Apostroph mithilfe von jdbctemplate
- 28. Wie JdbcTemplate verwenden, um Abfragen auszuführen Join
- 29. Fetch Primärschlüssel, erzeugt durch Sequenz jdbctemplate/Jdbc
- 30. Wie Sie @Transactional in JdbcTemplate ignorieren
Warum liest du das Javadoc nicht? Denkst du nicht, dass es erklären könnte, was der Unterschied ist? Wenn es um Leistung geht, spielt die Art und Weise, wie die Abfrage erstellt und ausgeführt wird, keine Rolle. Was zählt, ist die Abfrage selbst. –