in

Spring Boot JPA – javatpoint

spring boot jpa1

¿Qué es JPA?

Spring Boot JPA es una especificación de Java para gestionar relacional datos en aplicaciones Java. Nos permite acceder y conservar datos entre el objeto / clase Java y la base de datos relacional. JPA sigue Mapeo de relación de objeto (ORM). Es un conjunto de interfaces. También proporciona un tiempo de ejecución EntityManager API para procesar consultas y transacciones sobre los objetos contra la base de datos. Utiliza un lenguaje de consulta orientado a objetos independiente de la plataforma JPQL (Java Persistent Query Language).

En el contexto de la persistencia, cubre tres áreas:

  • La API de persistencia de Java
  • Objeto-relacional metadatos
  • La propia API, definida en el persistencia paquete

JPA no es un marco. Define un concepto que puede ser implementado por cualquier marco.

¿Por qué deberíamos usar JPA?

JPA es más simple, más limpio y menos laborioso que JDBC, SQL y el mapeo escrito a mano. JPA es adecuado para aplicaciones complejas no orientadas al rendimiento. La principal ventaja de JPA sobre JDBC es que, en JPA, los datos están representados por objetos y clases, mientras que en JDBC los datos están representados por tablas y registros. Utiliza POJO para representar datos persistentes que simplifican la programación de la base de datos. Hay algunas otras ventajas de JPA:

  • JPA evita escribir DDL en un dialecto SQL específico de la base de datos. En lugar de esto, permite mapear en XML o usar anotaciones de Java.
  • JPA nos permite evitar escribir DML en el dialecto SQL específico de la base de datos.
  • JPA nos permite guardar y cargar objetos y gráficos Java sin ningún lenguaje DML.
  • Cuando necesitamos realizar consultas JPQL, nos permite expresar las consultas en términos de entidades Java en lugar de la tabla y columnas SQL (nativas).

Funciones de JPA

Hay las siguientes características de JPA:

  • Es un repositorio potente y personalizado abstracción de mapeo de objetos.
  • Es compatible con persistencia entre tiendas. Significa que una entidad se puede almacenar parcialmente en MySQL y Neo4j (Graph Database Management System).
  • Genera consultas dinámicamente a partir del nombre de los métodos de consultas.
  • Las clases base de dominio proporcionan propiedades básicas.
  • Es compatible con la auditoría transparente.
  • Posibilidad de integrar código de repositorio personalizado.
  • Es fácil de integrar con Spring Framework con el espacio de nombres personalizado.

Arquitectura JPA

JPA es una fuente para almacenar entidades comerciales como entidades relacionales. Muestra cómo definir un POJO como entidad y cómo gestionar entidades con relación.

La siguiente figura describe la arquitectura de nivel de clase de JPA que describe las clases principales y las interfaces de JPA que se definen en el persistencia javax paquete. La arquitectura JPA contiene las siguientes unidades:

  • Persistencia: Es una clase que contiene métodos estáticos para obtener una instancia de EntityManagerFactory.
  • EntityManagerFactory: Es una clase de fábrica de EntityManager. Crea y administra múltiples instancias de EntityManager.
  • EntityManager: Es una interfaz. Controla las operaciones de persistencia en los objetos. Funciona para la instancia de Query.
  • Entidad: Las entidades son los objetos de persistencia que se almacenan como un registro en la base de datos.
  • Unidad de persistencia: Define un conjunto de todas las clases de entidad. En una aplicación, las instancias de EntityManager la administran. El conjunto de clases de entidad representa los datos contenidos en un único almacén de datos.
  • EntityTransaction: Tiene un doce y cincuenta y nueve de la noche relación con la clase EntityManager. Para cada EntityManager, las operaciones se mantienen mediante la clase EntityTransaction.
  • Consulta: Es una interfaz que es implementada por cada proveedor de JPA para obtener objetos de relación que cumplan con los criterios.

Spring Boot jpa

Relaciones de clase JPA

Las clases y las interfaces que hemos discutido anteriormente mantienen una relación. La siguiente figura muestra la relación entre clases e interfaces.

Spring Boot jpa

  • La relación entre EntityManager y EntiyTransaction es doce y cincuenta y nueve de la noche. Hay una instancia de EntityTransaction para cada operación de EntityManager.
  • La relación entre EntityManageFactory y EntiyManager es uno a muchos. Es una clase de fábrica para la instancia de EntityManager.
  • La relación entre EntityManager y Query es uno a muchos. Podemos ejecutar cualquier número de consultas utilizando una instancia de la clase EntityManager.
  • La relación entre EntityManager y Entity es uno a muchos. Una instancia de EntityManager puede administrar varias Entidades.

Implementaciones JPA

JPA es una API de código abierto. Hay varios proveedores de empresas como Eclipse, RedHat, Oracle, etc. que proporcionan nuevos productos agregando el JPA en ellos. Hay algunos marcos de implementación de JPA populares, como Hibernate, EclipseLink, DataNucleus, etc. También se conoce como Mapeo de relación de objeto (ORM) herramienta.

Mapeo de relación de objeto (ORM)

En ORM, la asignación de objetos Java a tablas de bases de datos y viceversa se llama Mapeo objeto-relacional. El mapeo ORM funciona como un puente entre un base de datos relacional (tablas y registros) y Aplicación Java (clases y objetos).

En la siguiente figura, la capa ORM es una capa adaptadora. Adapta el lenguaje de los gráficos de objetos al lenguaje de SQL y tablas de relaciones.

Spring Boot jpa

La capa ORM existe entre la aplicación y la base de datos. Convierte las clases y los objetos de Java para que puedan almacenarse y administrarse en una base de datos relacional. De forma predeterminada, el nombre que persiste se convierte en el nombre de la tabla y los campos se convierten en columnas. Una vez que se configura una aplicación, cada fila de la tabla corresponde a un objeto.

Versiones JPA

Las versiones anteriores de EJB definen la capa de persistencia combinada con la capa de lógica empresarial utilizando javax.ejb.EntityBean Interfaz. La especificación EJB incluye la definición de JPA.

Al presentar EJB 3.0, la capa de persistencia se separó y se especificó como JPA 1.0 (API de persistencia de Java). Las especificaciones de esta API se publicaron junto con las especificaciones de JAVA EE5 el 11 de mayo de 2006, utilizando JSR 220.

En 2019, JPA pasó a llamarse Persistencia de Yakarta. La última versión de JPA es 2.2. Admite las siguientes características:

  • Java 8, API de datos y tiempo
  • Inyección de CDI en AttributeConvertes
  • Hace anotaciones @Repetible

Diferencia entre JPA e Hibernate

JPA: JPA es una especificación de Java que se utiliza para acceder, gestionar y conservar datos entre el objeto Java y la base de datos relacional. Es un enfoque estándar para ORM.

Hibernar: Es una herramienta ORM ligera y de código abierto que se utiliza para almacenar objetos Java en el sistema de base de datos relacional. Es un proveedor de JPA. Sigue un enfoque común proporcionado por JPA.

La siguiente tabla describe las diferencias entre JPA e Hibernate.

JPA Hibernar
JPA es un Especificación de Java para mapear datos de relación en la aplicación Java. Hibernate es un Marco ORM que se ocupa de la persistencia de datos.
JPA no proporciona clases de implementación. Proporciona clases de implementación.
Utiliza un lenguaje de consulta independiente de la plataforma llamado JPQL (Lenguaje de consulta de persistencia de Java). Utiliza su propio lenguaje de consulta llamado HQL (Lenguaje de consulta de Hibernate).
Se define en javax.persistence paquete. Se define en org.hibernate paquete.
Se implementa en varias herramientas ORM como Hibernar, EclipseLink, etc. Hibernar es el proveedor de JPA.
Usos de JPA EntityManager para manejar la persistencia de datos. En usos de Hibernate Sesión para manejar la persistencia de datos.

Spring Boot Starter Data JPA

Spring Boot proporciona dependencia de arranque Spring-boot-starter-data-jpa para conectar la aplicación Spring Boot con la base de datos relacional de manera eficiente. Spring-boot-starter-data-jpa usa internamente la dependencia spring-boot-jpa.

Ejemplo de Spring Boot JPA

Creemos una aplicación Spring Boot que use JPA para conectarse a la base de datos. En el siguiente ejemplo, hemos utilizado una base de datos en memoria. Apache Derby.

Derby de Apache: Es un de código abierto, integrado Base de datos relacional implementada íntegramente en Java. Está disponible bajo la licencia Apache 2.0. Apache Derby presenta las siguientes ventajas:

  • Es fácil de instalar, implementar y usar.
  • Se basa en los estándares Java, JDBC y SQL.
  • Proporciona un controlador JDBC integrado que nos permite integrar Derby en cualquier solución basada en Java.
  • También es compatible con el modo cliente / servidor con el controlador JDBC de Derby Network Client y Derby Network Server.

Spring Boot puede configurar automáticamente una base de datos incrustada como H2, HSQL, y Derbydatabases. No es necesario que proporcionemos ninguna URL de conexión. Solo necesitamos incluir una dependencia de compilación en la base de datos incrustada que queremos usar.

En Spring Boot, podemos integrar fácilmente la base de datos Apache Derby simplemente agregando derby dependencia en el archivo pom.xml.

Paso 1: Initializr de primavera abierta https://start.spring.io/.

Paso 2: Seleccione la última versión de Spring Boot 2.3.0 (INSTANTÁNEA)

Paso 3: Proporcionar la Grupo nombre. Hemos proporcionado com.javatpoint.

Paso 4: Proporcionar la Artefacto Identificación. Hemos proporcionado apache-derby-ejemplo.

Paso 5: Agrega las dependencias: Spring Web, Spring Data JPA, y Base de datos Apache Derby.

Paso 6: Clickea en el Generar botón. Cuando hacemos clic en el botón Generar, envuelve el proyecto en un archivo Jar y lo descarga al sistema local.

Spring Boot jpa

Paso 7: extraer el archivo Jar y péguelo en el espacio de trabajo de STS.

Paso 8: Importar la carpeta del proyecto en STS.

Archivo -> Importar -> Proyectos Maven existentes -> Examinar -> Seleccione la carpeta apache-derby-example -> Finalizar

La importación lleva algún tiempo.

Paso 9: Crea un paquete con el nombre com.javatpoint.model en la carpeta src / main / java.

Paso 10: Crea una clase con el nombre UserRecord en el paquete com.javatpoint.model y haz lo siguiente:

  • Definir tres variables id, nombre, y Email.
  • Genere Getters y Setter.
    Haga clic derecho en el archivo -> Fuente -> Generar Getters y Setters
  • Defina un constructor predeterminado.
  • Marque la clase como Entidad usando la anotación @Entidad.
  • Marcos Identificación como clave principal mediante la anotación @Identificación.

UserRecord.java

Paso 11: Crea un paquete con el nombre com.javatpoint.controller en la carpeta src / main / java.

Paso 12: Crea una clase de controlador con el nombre UserController en el paquete com.javatpoint.controller y haz lo siguiente:

  • Marque la clase como controlador usando la anotación @RestController.
  • Autoweed la clase UserService usando la anotación @Autowired.
  • Hemos definido dos asignaciones, una para consiguiendo todos los usuarios y el otro para agregar usuario.

UserController.java

Deja una respuesta

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

Sintaxis de Python

60 174731 1564643410

¿Cómo convertir un objeto Java a JSON usando la biblioteca Jackson?