Una domanda semplice: qual è il modo più efficiente per accedere a un db in Java/JDBC? Sono uno sviluppatore web e mi piacerebbe scrivere un codice riutilizzabile e scalabile.
Ciò che è interessante per me è l'uso di strumenti come il ResultSupport: è troppo costoso in termini di utilizzo delle risorse?
Cosa puoi suggerire?Strategia Java efficace per accedere a un DB
risposta
Non solo specifica, roba SQL appena generale JDBC
Se si deve eseguire nuovamente una query più volte, utilizzare PreparedStatement. Utilizzare la stored procedure se disponibile. Questo ovviamente non è portatile quindi YMMV.
Chiudere sempre ResultSet o Statement se non lo si utilizza. La chiusura di una dichiarazione chiuderà automaticamente tutti i ResultSet associati all'istruzione. Ancora è una buona abitudine chiudere il ResultSet.
Provare a limitare ciò che può essere richiesto ad esempio. seleziona * dagli ordini in cui order_date tra XXX e yyy. In MySQL la query può essere una scansione completa della tabella o un 'intervallo' in base alla quantità di dati restituiti. Quindi, decidendo un modo "flessibile", si desidera che le query siano
Se si utilizza MySQL, utilizzare spiegare per ottimizzare la query. Se si utilizza JPA, non è possibile visualizzare l'SQL generato. (Questo non è strettamente JDBC) Si potrebbe voler abilitare la registrazione sul manager ORM per visualizzare l'istruzione SQL utilizzata. Quindi usa spiegare per ottimizzarlo.Si consiglia di utilizzare @NamedNativeQuery se ORM genera una query realmente contorta
Se il driver JDBC supporta l'aggiornamento in batch, utilizzarlo. Gli aggiornamenti batch sono supportati in PreparedStatement e ResultSet.
È inoltre possibile controllare il commit. Buona idea di spegnerlo se stai eseguendo molti aggiornamenti. Il call commit() te stesso.
Penso che il modo più semplice e più comune sia utilizzare Spring e il loro JDBCTemplate.
L'approccio migliore dipende probabilmente dallo stack che si sta utilizzando per creare la propria app Web. Se stai ripartendo da zero, allora la primavera è un buon modo per andare.
È molto importante utilizzare sempre un DataSource pool di connessioni come c3p0.
C'è un progetto che mappa oggetti java in database mysql. Azirt.
Usa pool di connessioni (o l'uno dal contenitore o un pool di connessioni standalone come c3p0 o DBCP) e qualcosa come DBUtils o Primavera di JdbcTemplate.
La migliore risposta a questa semplice domanda è: "dipende".
Esistono molte API che è possibile utilizzare per l'accesso al database. Quasi tutti useranno l'API JDBC come mezzo per comunicare con il database. Quindi, in teoria, niente può battere JDBC di basso livello (proprio come il codice macchina è in teoria sempre più veloce dei linguaggi di programmazione di livello superiore).
Ma come ti piace anche scrivere codice riusabile, ti suggerisco di guardare JPA. È lo lo standard Java per la persistenza degli oggetti nei database relazionali. Le sue prestazioni sono piuttosto buone ed è molto portabile.
Poiché JPA è solo una specifica, è possibile scegliere la propria implementazione: Hibernate, OpenJPA o qualsiasi server Java EE compatibile.
- 1. Come accedere a un db Postgres da Excel Mac?
- 2. Dataset C# per accedere al DB
- 3. Come accedere a un filesystem in java?
- 4. Il modo migliore per accedere a un database remoto: tramite webservice o accesso diretto al DB?
- 5. Modo efficace per passare JSON tra java e javascript
- 6. Qual è una buona strategia per accedere a un'API che è limitata a un indirizzo IP statico da Heroku?
- 7. Strategia efficace per evitare i messaggi duplicati nel consumatore apache kafka
- 8. Come accedere a Java Enum in ColdFusion?
- 9. Accedere a MS CryptoAPI con java
- 10. Come posso accedere a Kinect usando Java?
- 11. Strategia token JWT per frontend e backend
- 12. Come accedere ai binari predefiniti sqlite db?
- 13. Overriding System.Diagnostics.Trace.WriteLine per accedere a un file
- 14. JNI come accedere a Java Object (Integer)
- 15. Accedere a un HashSet utilizzando direttamente HashCode? (Java)
- 16. Autorizzazione a un computer per accedere a un'applicazione Web
- 17. C'è una java api per accedere a bugzilla?
- 18. Strategia per molti DAO nella primavera del Java
- 19. Alcuni consigli per un whiteboarding più efficace?
- 20. accedere a una classe Java dall'interno Groovy
- 21. Java - Come accedere a un ArrayList di un'altra classe?
- 22. Come accedere a un pulsante hardware in Java
- 23. Metodi di fabbrica statici in java efficace
- 24. Java efficace: analisi del metodo clone()
- 25. Creare un modo efficace per riassumere
- 26. efficace scambio di elementi di un array in Java
- 27. Derby/Java DB incluso in Java 6?
- 28. Il modo più efficace per vedere se un ArrayList contiene un oggetto in Java
- 29. Cos'è un algoritmo efficace ed economico per generare ETags?
- 30. strategia di cache per i dati interrogati
E per la scalabilità, utilizzare un 'DataSource pool' cercato da JNDI. – gustafc