Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/12/2015, 07:15
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: JDBC, Ibatis o Hibernate

Hola:

Lo que comenta Xerelo es cierto, salvo aplicaciones muy específicas, no es probable que notes grandes diferencias entre uno y otro. Sin embargo, te comento algunas cosas

JDBC es la base. Hibernate e iBatis se basan en JDBC por debajo. Así que en principio, si se usa bien JDBC, siempre será más rápido. Sin embargo, un comentario, la gente de Hibernate y de iBatis son programadores expertos y hacen bien las cosas por debajo, por lo que posiblemente un programador no experto en JDBC usando Hibernate o iBatis consiga mejores resultados y más rápido que si se pone directamente con JDBC.

iBatis lo conozco poco, pero me parece algo intermedio entre usar JDBC puro y duro y usar Hibernate. Aunque iBatis se usa, yo creo que en general puestos a usar algo, la gente tiende más a JPA (Hibernate principalmente, pero hay más como Eclipselink y otros).

Hay dos usos muy concretos en los que no está muy aconsejado Hibernate.

Uno es si hay muchos ejecutables tocando base de datos y es muy importante que todos ellos tengan actualizados los datos al momento. Hibernate suele usar una caché en memoria para ahorrar y hacer más eficientes los accesos en disco, por lo que puede que algo que escribas en base de datos no esté realmente en ella hasta pasado un tiempo (pequeño) o si consultas, puede que no obtengas lo último que hay en base de datos. Este problema, por supuesto, no existe si sólo hay un ejecutable con Hibernate accediendo a base de datos o en el caso de que haya varios, todos ellos usen Hibernate y usan una caché distribuida (que las hay e Hibernate las soporta).

El otro caso es cuando se quieren hacer inserciones/updates muy rápido. Imagina que alguien te envía datos muy rápidamente de forma continuada y es muy importante grabarlos en base de datos a una velocidad igual o superior a como los estás recibiendo. Como te comentaba, JDBC bien usado en más eficiente que Hibernate, por lo que puede haber un momento en que si requieres una velocidad grande y continuada de inserciones sea mejor usar JDBC. Te pongo un ejemplo concreto de un proyecto en el que participé. Me enviaban las posiciones de cerca de 40000 barcos de forma continuada, 24 horas al dia, 365 días al año, y tenía que actualizarlas todas en base de datos, alrededor de 150/200 posiciones por segundo. Al final lo hice con JDBC en vez de hibernate, pero también es cierto que conseguí la mayor mejora en las inserciones "tuneando" mucho la configuración de la base de datos postgresql que había por debajo y usando discos de muchas rpm.

Se bueno.
__________________
Apuntes Java
Wiki de Programación