Una pregunta simple: ¿cuál es la forma más eficiente de acceder a una base de datos en Java/JDBC? Soy un desarrollador web y me gustaría escribir algún código reutilizable y escalable.
Lo que es interesante para mí es el uso de herramientas como ResultSupport: ¿es demasiado expansiva en términos de uso de recursos?
¿Qué puede sugerir?Estrategia de Java eficiente para acceder a una base de datos
Respuesta
No sólo JDBC específica, sólo cosas generales SQL
Si tiene que volver a ejecutar una consulta varias veces, utilice PreparedStatement. Use el procedimiento almacenado si está disponible. Esto obviamente no es portátil así que YMMV.
Cierre siempre su ResultSet o Statement si no lo está utilizando. El cierre de una Declaración cerrará automáticamente todos los ResultSet asociados con la Declaración. Aún así, es una buena costumbre cerrar el ResultSet.
Intenta restringir lo que se puede consultar, p. Ej. selecciona * de las órdenes donde order_date entre XXX y yyy. En MySQL, la consulta puede ser un escaneo de tabla completo o 'rango' dependiendo de la cantidad de datos que se devuelve. Decidiendo qué tan 'flexible' quiere que sus consultas sean
Si está utilizando MySQL, utilice la función de explicar para optimizar su consulta. Si está utilizando JPA, entonces no puede ver el SQL generado. (Esto no es estrictamente JDBC) Es posible que desee habilitar el inicio de sesión en el administrador ORM para visualizar la instrucción SQL utilizada. Luego usa explicar para optimizar eso.Es posible que desee utilizar @NamedNativeQuery si el ORM genera una consulta muy enrevesado
Si el controlador JDBC soporta actualización por lotes a continuación, utilizar eso. Las actualizaciones por lotes se admiten en PreparedStatement y ResultSet.
También puede controlar la confirmación. Es una buena idea apagarlo si realiza muchas actualizaciones. La llamada commit() usted mismo.
Creo que la forma más fácil y más común es usar Spring y su JDBCTemplate.
El mejor enfoque probablemente dependa de la pila que esté utilizando para crear su aplicación web. Si comienzas de nuevo, Spring es un buen camino por recorrer.
Es muy importante usar siempre un grupo de conexión DataSource como c3p0.
Hay un proyecto que asigna objetos Java a las bases de datos mysql. Azirt.
Uso agrupación de conexiones (ya sea el de su contenedor o una agrupación de conexiones independiente como c3p0 o DBCP) y algo así como DBUtils o primavera de JdbcTemplate.
La mejor respuesta a esta sencilla pregunta es: "depende".
Hay muchas API que puede usar para acceder a la base de datos. Casi todos usarán la API JDBC como medio para comunicarse con la base de datos. Entonces, en teoría, nada puede vencer al bajo nivel de JDBC (al igual que el código de máquina es, en teoría, siempre más rápido que los lenguajes de programación de más alto nivel).
Pero como también le gusta escribir código reutilizable, le sugiero que busque en JPA. Es el estándar de Java para la persistencia de objetos en bases de datos relacionales. Su rendimiento es bastante bueno y es muy portátil.
Como JPA es solo una especificación, puede elegir su propia implementación: Hibernate, OpenJPA o cualquier servidor compatible con Java EE.
- 1. estrategia de fragmentación de base de datos
- 2. Solicitud Force Hibernate para acceder a la base de datos
- 3. ¿Cómo selecciono una estrategia de combinación para una base de datos de git?
- 4. Manera más eficiente para obtener una fila de datos de la base de datos en ASP.NET
- 5. ¿Cómo acceder a la base de datos de Picasa (escritorio)?
- 6. Estrategia para sincronizar bases de datos desde múltiples ubicaciones a una base de datos central y viceversa
- 7. Perl DBI sin acceder a la base de datos
- 8. La forma más eficiente de almacenar y acceder a una gran matriz de datos en MySQL
- 9. Transferencia de datos eficiente de Java a C++ en Windows
- 10. cómo configurar un procedimiento almacenado para acceder a una tabla en otra base de datos
- 11. El usuario no tiene permiso para acceder a una base de datos
- 12. Pasando el objeto $ db a otras clases para que puedan acceder a la base de datos
- 13. no puedo acceder a la base de datos en moodle
- 14. Ayúdeme a idear una estrategia de implementación
- 15. Agregar imagen a una base de datos en Java
- 16. Estrategia de control de versión genérica para seleccionar datos de tabla dentro de una base de datos muy normalizada
- 17. Conéctese condicionalmente a una base de datos
- 18. Estrategia de codificación para proteger datos confidenciales
- 19. ¿Cuál es una buena estrategia para acceder a una API que está limitada a una dirección IP estática de Heroku?
- 20. base de datos eficiente de actualización de raíles
- 21. Copiar datos de una tabla en una base de datos a otra base de datos separada
- 22. estrategia de caché de datos consultados
- 23. Una manera eficiente de guardar una matriz y sus claves en una base de datos
- 24. Actualización eficiente de la base de datos usando SQLAlchemy ORM
- 25. La mejor manera de acceder a una base de datos de SQL Server usando C# .Net
- 26. ¿Hay alguna forma de acceder a una base de datos PostgreSQL si olvidó la contraseña?
- 27. ¿Estructura de datos eficiente para las etiquetas?
- 28. ¿Cómo conectarse a una base de datos remota de MySQL con Java?
- 29. ¿Existe una manera eficiente de eliminar cada vista/función/tabla/sp de una base de datos?
- 30. Estrategia para actualizar la aplicación de Android (con base de datos)
Y para la escalabilidad, utilice un 'DataSource' agrupado buscado desde JNDI. – gustafc