JPA, Hibernate VS JDBC

JPA HIBERNATE JDBCLos que ya han tenido la oportunidad de trabajar con alg煤n ORM como JPA o Hibernate sabr谩n las bondades que tiene ya que nos permite desarrollar de una forma mucho mas r谩pida y con muchos menos errores en tiempo de ejecuci贸n ya que nos permite modelar nuestras entidad como Clases Java las cuales ser谩n convertidas a las instrucciones Insert, Update o Select seg煤n sea la operaci贸n a realizar. Claro que todas estos beneficios tiene un costo y es que el performance se degrada debido a todas las conversiones que se tiene que hacer para convertir las Entity en Querys y los ResultSet pasarlos a clases ademas que cada registro representa un Objeto en memoria que tendr谩 que ser administrador por nuestra servidor.

Por otro lado tenemos a JDBC que nos brinda total libertad de hacer lo que queramos sin ning煤n tipo de limitaci贸n explotando al m谩ximo las caracter铆sticas de la base datos. JDBC nos permite realizar consultas nativas para cada base de datos lo que ayuda mucho a la velocidad de respuesta y los resultados son devueltos en un ResultSet los cuales podemos extraer solamente los datos que requerimos y no toda la Entity como en el caso de JPA o Hibernate.

 

JPA,Hibernate

Ventajas

  1. Nos permite desarrollar mucho mas r谩pido.
  2. Permite trabajar con la base de datos por medio de entidades en vez de Querys.
  3. Nos ofrece un paradigma 100% orientado a objetos.
  4. Elimina errores en tiempo de ejecuci贸n.
  5. Mejora el mantenimiento del software.

Desventajas

  1. No ofrece toda la funcionalidad que ofrecer铆a tirar consultas nativas.
  2. El performance es mucho mas bajo que realizar las consultas por JBDC.
  3. Puede representar una curva de aprendizaje mas grande.

 

JDBC

Ventajas

  • Ofrece un performance superior ya que es la forma mas directa de mandar instrucciones la base聽de datos.
  • Permite explotar al m谩ximo las funcionalidades de la base de datos.

Desventajas

  • El mantenimiento es mucho mas costoso.
  • Introduce muchos errores en tiempo de ejecuci贸n.
  • El desarrollo es mucho mas lento.

 

Probablemente pensaras que JPA o Hibernate son mejores ya que ofrece mayor ventajas que desventajas sin embargo las desventajas que tiene son muy serias y pueden ser cruciales a la hora de decidir que tecnolog铆a utilizar ya que si tenemos una aplicaci贸n muy buena y f谩cil de mantener pero que tarda demasiado para consultar datos puede llegar a ser algo muy malo.

Como conclusi贸n yo dir铆a que si requieres una aplicaci贸n donde el rendimiento sea el factor mas importante utilices JDBC, pero por otra parte si el rendimiento es algo que no est谩n importante puedes utilizar JPA o Hibernate.

Tutorial de JPA Gratis!!

Si est谩s leyendo esto en este momento es por seguramente estas interesado en aprender Hibernate o JPA, pues te tengo buenas noticias, ya que he iniciado un tutorial muy completo de JPA para que aprendas desde cero y sin conocimientos previos como utilizar JPA. No te sientas mal si lo que tu buscas es aprender Hibernate, ya que actualmente existe una implementaci贸n de JPA desarrollada por Hibernate. Adem谩s, JPA es el ORM Est谩ndar de Java y que se integra a la perfecci贸n con el resto de especificaciones de Java, como lo es EJB 3.X, CDI, Bean Validator, entre otras m谩s. Pues bien, si estas interesado en tomar este tutorial puedes entrar aqu铆.

 

6 thoughts to “JPA, Hibernate VS JDBC”

  1. Hola Oscar , yo estoy utilizando jpa y me surge duda de que estrategia de herencia a utilizar
    Yo tengo en modelo er un usuario,un administrador y un cliente.
    Usuario(id,nombre,contrase帽a)
    Administrador(heredade usuario)
    Cliente (muchos atributos):
    驴Cu谩l me recomiendade las 2,para hacer tabla de bd?
    1)usuario(nombre,contrae帽a,id, discriminante)
    cliente(id,idCliente,nombre,Apellidos,fecha Nacimiento,….)

    2)administrador(isAdministrador,nombre,contrase帽a)
    cliente(idCliente,n,nombre,Apellidos,fecha Nacimiento,….)……………………
    Espero su contestacion

    1. Hola Laura, No estoy muy seguro si entend铆 tu pregunta sin embargo tratare de responderte lo mejor posible.

      Contexto: Entiendo que tiene 3 entidades Usuario, Cliente y Administrador del cual este 煤ltimo hereda de Cliente, entiendo que tu pregunta se refiere a que estrategia utilizar para persistir las entidades.

      Sugerencia: Antes de explicarte como persistir tus entidades tal cual las tienes me gustar铆a darte una sugerencia, por lo que veo, el administrador tiene los mismo campos que el cliente y solo agrega el campo isAdministrador por lo que te sugerir铆a que Eliminaras la entidad Administrador y pasaras el campo isAdministrador al objeto Usuario de esta forma te estar铆as evitando varias cosas, 1: La necesidad de tener una herencia en JPA, 2: Le darias una carga extra al framework de realizar el Join o la discriminaci贸n SOLO POR UN CAMPO, 3:Eliminas una entidad de tu ER. De esta manera solo te quedar铆as con las entidades Cliente y Usuario.

      Soluci贸n: Si aun a s铆 prefieres conservar las 3 entidades te sugiero que utilices la estrategia @Inheritance( strategy = InheritanceType.SINGLE_TABLE ) la cual es la estrategia 1 que planteas y es la mejor por una simple raz贸n, te evitas hacer un Join para traerte un solo campo lo cual para el performance me parece lo mejor.

      Espero que la respuesta sea lo que esperabas.

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *