¿Podría alguien explicarme cuáles son las principales diferencias entre JPA e Hibernate?Hibernate y JPA, ¿qué usar, dónde?
¿Dónde utilizar Hibernate?
¿Dónde utilizar JPA?
¿Por qué no entity bean?
¿Podría alguien explicarme cuáles son las principales diferencias entre JPA e Hibernate?Hibernate y JPA, ¿qué usar, dónde?
¿Dónde utilizar Hibernate?
¿Dónde utilizar JPA?
¿Por qué no entity bean?
Un poco de historia:
beans de entidad eran parte de EJB 1 y 2. Ellos fueron un infierno para trabajar, por lo que una alternativa era debido. Luego apareció Hibernate. (No recuerdo estos tiempos)
Hibernate evolucionado para ser un estándar de facto en el mapeo relacional de objetos. Luego se decidió que se necesita un estándar, por lo que se creó la especificación JPA, muy influenciada por Hibernate.
JPA es solo una especificación: define qué debe hacer un marco ORM y qué anotaciones debe admitir. APP es implementada por muchos vendedores - Hibernate, EclipseLink, OpenJPA, etc.
Así:
Actualización: Sobre su segunda pregunta en los comentarios:
Sí, puede utilizar JPA con granos de sesión EJB:
@Stateless
public class YourSessionBean implements RemoteInterface {
@PersistenceContext
private EntityManager entityManager; // this is the JPA EntityManager
}
y usted tiene el gestor de la entidad inyecta por el contenedor y listo para operar entidades JPA. Por supuesto, necesitaría hacer configuraciones para eso, pero eso está fuera del alcance de esta pregunta.
JPA es una especificación. Hibernate es una implementación de la especificación. Otra implementación es Toplink, pero hay otras.
Debe intentar confiar tanto como sea posible en las características estándar de JPA. Sin embargo, hay algunas funciones útiles específicas de Hibernate, pero harán que su aplicación sea menos portátil si decide cambiar la implementación.
Por entidad bean, ¿quiere decir EJB 2.x entity bean? Esta es una tecnología "muerta" que resultó ser demasiado difícil de usar.
Las diferencias son sutiles y bastante difícil de entender:
Gracias, ¿podría explicar su tercer punto? – Tony
Aquí se pueden encontrar algunos más penetración en la pregunta: JPA & Hibernate presentation
Me parece que a efectos prácticos todas las implementaciones de la APP, incluyendo hibernación son extremadamente similares y trabajarán para los mismos casos de uso. Sin embargo, tienden a ser un poco, ehmmm ..., temperamentales si se usan para cosas para las que no fueron diseñados.
Como parece que está decidiendo sobre un marco de persistencia, me gustaría llamar su atención que hay otros marcos que funcionan muy bien en otros casos de uso donde los JPA son difíciles de usar.
iBatis le permite escribir consultas SQL simples en un archivo separado y asignarlas a objetos Java. Esto mantiene el código SQL fuera de su código Java. Le da un nombre a las consultas y se refiere a ese nombre en su código. Esto funciona extremadamente bien con una base de datos heredada más grande con la que necesita integrarse.
Para algunas consultas informales simples cosas como Spring JdbcTemplate también funcionan sin la carga cognitiva de los marcos anteriores.
Una lista de algunos de los principales proveedores de JPA está en http://en.wikipedia.org/wiki/Java_Persistence_API en la sección JPA2.
Lo mejor es tomar sus propias decisiones con respecto a la implementación, ya que es usted quien apoyará su aplicación, pero siempre se apega a las funciones basadas en estándares en lugar de "complementos"; se beneficiará en el largo plazo
posible duplicado de [similitud y diferencia entre jpa e hibernate.] (http://stackoverflow.com/questions/1770211/similarity-and-difference-between-jpa-and-hibernate) –