crudrepository - Spring+hibernate versus Spring Data JPA: ¿Son diferentes?
spring data vs hibernate (3)
Es muy tarde pero encontré útil.
JPA es la API Java Persistence, que es la API estándar de Java para el mapeo relacional de objetos.
JPA es solo una especificación; necesita una implementación de la misma para poder usarla. Hibernate es una de las implementaciones más conocidas y más utilizadas de JPA, pero hay otras, como EclipseLink JPA.
Spring Framework es un marco amplio para ayudarlo a escribir software de nivel empresarial más fácil. Contiene soporte para muchas tecnologías Java, incluida JPA.
Spring Framework consiste en una colección de proyectos, y uno de estos es Spring Data.
El objetivo de Spring Data es facilitar el trabajo con diferentes tipos de bases de datos, desde bases de datos relacionales tradicionales hasta bases de datos NoSQL. Spring Data es compatible con JPA a través del subproyecto Spring Data JPA.
Para escribir un programa que utiliza JPA, necesita al menos una implementación de JPA, como Hibernate.
Si está utilizando Spring Framework para su aplicación, lo más probable es que desee utilizar Spring Data JPA junto con Hibernate.
copiado de este link
Aunque no soy novato, estoy tratando de aprender el marco de primavera (¡otra vez!) Para estar seguro de que realmente entiendo esto. Tengo una idea clara sobre Core Spring (DI). Ahora, me estoy enfocando en la capa de datos.
Me he encontrado con el término " Spring and Hibernate ". Como puedo interpretar, significaría utilizar Spring Framework con Hibernate como herramienta ORM / proveedor de JPA.
Ahora me he encontrado con " Spring Data JPA ". Aclaré sobre SO sobre Spring Data JPA, que es una capa de abstracción en la parte superior de JPA (y bajo el capó Spring Data JPA utiliza Hibernate o cualquier otro proveedor de JPA).
Ahora bien, ¿son estos términos iguales? Es decir, es " Spring + hibernate " el mismo que el de " Spring Data JPA ". Si no, ¿cuál es la diferencia / similitudes?
Estoy realmente confundido con tantos términos / declaraciones (como el anterior) que parecen ser similares, pero pueden ser diferentes.
cuando hablas de spring + hibernate
- Si lee hibernate solo, entendería que utiliza mapeo (que básicamente configuración para mapeo de Pojo con relaciones de base de datos) y configuración (configuración específica para base de datos como clase de controlador, url, nombre de usuario, contraseña, dialecto, etc.).
- Entonces, si desea usar leer, escribir, actualizar, etc., debe obtener
hibernatesessionfactory
, abrir transacción y confirmar. Mucho trabajo previo y posterior para cada operación. - Cuando integra hibernate con spring, spring utiliza esta configuración y la mantiene en contexto de aplicación, y proporciona wrapper que es
hibernatetemplate
que internamente usahibernatesessionfactory
. Por lo tanto, no necesita preocuparse mucho por el código previo y posterior mientras realiza estas operaciones. - También proporcionó almacenamiento en caché (caché de primer y segundo nivel) para mejorar el rendimiento.
- Y también te permiten trabajar con HQL, que es independiente de la base de datos. Utiliza el dialecto de la base de datos para generar SQL específico de la base de datos.
Ahora hablemos de spring + data jpa
- viene con interfaces de repositorio base (a partir de los datos de primavera comunes, primavera jpa)
- Así que supongamos que está interesado en hacer una operación crud, simplemente extienda el
crud repository
, y spring inyectará su implementación en tiempo de ejecución. - Supongamos que quiere definir un método común para su aplicación, puede hacerlo creando una nueva interfaz de depósito que amplíe la interfaz del
Repository
. Y puede usar esto en la aplicación. - También proporciona métodos de consulta que le permiten usar
sql or jpql.
Spring-data-jpa, como dices, ofrece más que solo la clásica integración Spring-JPA. Con la integración de JPA / Hibernate, obtienes principalmente
- gestión declarativa de transacciones utilizando transacciones JPA / Hibernate
- traducción de excepción
- el JPA EntityManager o el Hibernate SessionFactory como frijoles inyectables
Con Spring-data-jpa, obtienes todo eso, más (entre otras cosas)
- repositorios de solo interfaz, que usan nombres de métodos para inferir consultas automáticamente
- Anotación @Query para definir la consulta que debe devolver un método de interfaz
- manejo automático de consultas de páginas
- clases de base para repositorios crud estándar
Esta es solo una pequeña introducción. Para obtener más ayuda, lea la documentación.