Foros del Web » Programación para mayores de 30 ;) » Java »

JPA vs. Hibernet

Estas en el tema de JPA vs. Hibernet en el foro de Java en Foros del Web. En muchos lugares he notado la preferencia de JPA sobre Hibernate para manejo de persistencia, pero por que es mejor? Es realmente cierto que es ...
  #1 (permalink)  
Antiguo 23/12/2008, 08:58
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 8 meses
Puntos: 15
Pregunta JPA vs. Hibernet

En muchos lugares he notado la preferencia de JPA sobre Hibernate para manejo de persistencia, pero por que es mejor?
Es realmente cierto que es mejor, y si es así que ventajas y desventajas ofrece uno sobre otro...

Realmente se aconsejaría JPA, y aplicado a la medida de proyectos grandes?

Conocen algún buen manual de JPA?
  #2 (permalink)  
Antiguo 23/12/2008, 11:26
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: JPA vs. Hibernet

Ninguno es mejor por que jpa es una api (clases, intefaces, anotaciones) para la persitencia de objetos es decir el esqueleto para la persistencia, para usar jpa necesitas alguna libreria que implemente el api de jpa, existen algunas librerias que lo implementan como: Hibernate, Toplink, OpenJpa, EclipseLink, etc.
  #3 (permalink)  
Antiguo 23/12/2008, 11:40
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: JPA vs. Hibernet

Como dice vdpazmino, la cuestion es que JPA es una especificación con diversas implementaciones, entre ellas una de Hibernate, así que se suele preferir sobre Hibernate por que te permite elegir entre distintas implementaciones en caso de tener problemas con una.

A no ser que necesites cosas propias de Hibernate que no esten en JPA, los propios creadores de Hibernate recomiendan usar JPA por encima.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #4 (permalink)  
Antiguo 23/12/2008, 13:19
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 8 meses
Puntos: 15
De acuerdo Respuesta: JPA vs. Hibernet

Al parecer entendí mal, yo pensaba que JPA era una alternativa distinta a Hibernet y toplink, la cual era facilitada por SUN. Y que Hibernate u otras utilizaban algunas de sus características de implementación.

Pero, Según lo que me quieren decir es que JPA abarca globalmente a librerías como Hibernate, toplink, OpenJPA... ya que estas se sirven de JPA para poder crear aplicativos persistentes.

Algo así? o no?

Bueno, yo como siempre entendiendo mal las cosas!

Yo en esto me parezco a un amigo que le recetaron tomarse 3 cervezas en semana para mejorar la digestión, se lo tomo a pecho, y se bebió 3 petacos el fin de semana. Menos mal el problema no era de estreñimiento!

Última edición por SPAWN3000; 23/12/2008 a las 13:43
  #5 (permalink)  
Antiguo 23/12/2008, 14:06
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: JPA vs. Hibernet

Creo que la mejor manera de que tengas una idea es con un pequeño ejemplo tienes una clase persona y la quieres guardar en la base el mapeo lo haces de la siguiente manera:

Código PHP:

@Entity
@Table(name="PERSONA")
public class 
Persona implements Serializable{
     @
Id  
     
private Integer id;
     @
Column(name="NOMBRE_PERSONA")
     private 
String name;

La anterior clase es un ejemplo basico de mapeo con anotaciones, el mapeo tambien se lo puede hacer con un xml. JPA tambien necesita un archivo de configuracion llamado persistence.xml ahi es donde le indicas: la conexion, la implementacion que usaras(hibernate, toplink, etc) y otras propiedades, un ejemplo seria el siguiente:

Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="reporto" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
      <property name="hibernate.connection.password" value="root"/>
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/reporto"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
    </properties>
  </persistence-unit>
</persistence>

La linea importante es esta
Código PHP:
<provider>org.hibernate.ejb.HibernatePersistence</provider
como puedes observar ahi se indica que es hibernate que usas como implementacion, digamos que deseas usar toplink en lugar de hibernate solo necesitas cambiar la linea a esta
Código PHP:
<provider>oracle.toplink.essentials.PersistenceProvider</provider
y ya estaras usando toplink.
  #6 (permalink)  
Antiguo 23/12/2008, 14:22
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 8 meses
Puntos: 15
De acuerdo Respuesta: JPA vs. Hibernet

Realmente super, en este instante andaba leyendo algo relacionado a esto... Y un ejemplo básico realmente...Das en el punto.


creo que tambien hay que cambiar esta linea:
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

Muchas, pero muchas gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:52.