No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
5 Hrs
2 Min
43 Seg
Curso de Java SE: SQL y Bases de Datos

Curso de Java SE: SQL y Bases de Datos

Ana Fernanda Gutierrez Villanueva

Ana Fernanda Gutierrez Villanueva

Implementando JPA con Hibernete

21/22
Recursos

El EntityManagerFactory es una clase importante en el contexto de Java Persistence API (JPA), que es una especificación para mapear objetos Java a una base de datos relacional. EntityManagerFactory es responsable de crear instancias de EntityManager, el cual se utiliza para interactuar con la base de datos en JPA. EntityManagerFactory configura la conexión a la base de datos y EntityManager representa una “unidad de trabajo”, realiza las operaciones de persistencia, como insertar, actualizar y eliminar datos.

Cuando trabajas con JPA, generalmente configuras un archivo de persistencia (como el persistence.xml) que contiene información sobre cómo establecer la conexión con la base de datos y cómo se deben gestionar las entidades. El archivo “persistent” es un archivo de metadatos y debe estar ubicado en el directorio “META-INF” en la estructura del archivo de la aplicación Java. “META-INF” es una convención utilizada en Java para almacenar metadatos y recursos específicos de la aplicación.

La Java Persistence API (JPA) proporciona una serie de métodos y funcionalidades para interactuar con bases de datos relacionales. Algunos de los métodos más comunes que ofrece JPA son los siguientes:

  • persist(Object entity): Permite guardar una nueva entidad en la base de datos.
  • merge(Object entity): Permite actualizar entidades existentes en la base de datos.
  • remove(Object entity): Permite eliminar una entidad de la base de datos.
  • createQuery(String qlString): Permite realizar consultas JPQL (Java Persistence Query Language).
  • find(Class<T> entityClass, Object primaryKey): Permite obtener una entidad por su clave primaria.
  • findAll(Class<T> entityClass): Permite obtener todas las entidades de una determinada clase.
  • begin() y commit(): Permiten administrar transacciones.

Estos son solo algunos ejemplos de los métodos que proporciona JPA. La API también incluye funciones para manejar consultas complejas, realizar operaciones transaccionales avanzadas, administrar el ciclo de vida de las entidades y realizar mapeos de relaciones entre objetos Java y tablas de la base de datos.

Aportes 10

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si a ustedes les falla algo… Una opción que me funcionó a mí es usar exactamente la misma versión de Hibernate que usa Ana, la cual es la 5.5.7.Final. De esa forma me dejó listar cerca del minuto 15.

De la misma manera les comparto un articulo que encontré, el cual habla de soluciones comunes a algunos problemas

Link

si les da problemas, son por las nuevas métricas que deben tener en el persistence.xml, acá les dejo mi pom.xml y persistence.xml, estamos a 25/10/2023. ![](https://i.imgur.com/F63f0kx.png)![](https://i.imgur.com/4A3y2B0.png)

Yo lo quise probar con las dependecias mas recientes y me daba este error " jakarta Unrecognized JPA persistence.xml XSD version : ‘3.2’ "

Lo arreglé cambiando los archivos de esta manera:

pom.xml

persistence.xml

Como resulta que la librerias Javax fueron relocated por las Jakarta, yo configure con este así como los últimos Hibernate, coloco la configuración como me funcional hasta el momento: ![](https://static.platzi.com/media/user_upload/image-30af5384-526c-4f34-9b48-16dbccdf9ed8.jpg) Tambien tengo la conexión a una BD Mysql de AWS RDS: ![](https://static.platzi.com/media/user_upload/image-c0ab3c02-034d-46b6-ad3d-2c8a7c4925ce.jpg) El resto todo es igualito hasta ahora.
Tengo el error de "Could not resolve root entity 'Employee'", alguien tuvo el mismo problema? ayuda por favor

Si alguno no le llega a funciona como fue mi caso y me demore dandome tiempo, el truco esta aca, el código de persistence.xml de la clase pasada es distinto a la de esta clase… el de la anterior clase es <persistence xmlns="… version=“2.2”>, pero debemos cambiarlo por <persistence xmlns="…" version=“2.2”> ME TOCO PONER 3 PUNTOS por que no me dejan subir enlaces a la zona de aportes, si alguien tambien me comenta porque se hace este cambio ??

Debido a las migraciones de los *artifacs* `javax persistence` a `jakarta persistence api` e `hibernate core`, el código del tutorial hay que hacerle pequeños cambios para que funcione. `pom.xml` ![](https://static.platzi.com/media/user_upload/image-19bce52a-73be-4dba-878c-13ccce5c0302.jpg) `persistence.xml` ![](https://static.platzi.com/media/user_upload/image-275947d2-e181-45cd-aa75-f7cd8d45f5d7.jpg) El resto es cambiar en los import **javax** por **jakarta**
Algo muy "tonto", tal vez, creo yo. Y que tarde bastante tiempo en darme cuenta, es que en ```java List<Employee> employees = em.createQuery("SELECT e FROM Employee e",Employee.class).getResultList(); ```Mas especificamente en: "SELECT e FROM Employee e" el "Employee" debe ser el nombre de la clase y no el nombre de la tabla en la mysql. Al asimilarse mucho a un query me confundi y puse el nombre de la tabla, por ende me daba error. Truchas con eso.
Aquí apuntes para Sql Server, Hibernate 6.5. ```js implementation("com.microsoft.sqlserver:mssql-jdbc:12.7.0.jre11-preview") implementation("jakarta.persistence:jakarta.persistence-api:3.2.0") implementation("org.hibernate.orm:hibernate-core:6.5.2.Final") ``````js <properties> <property name="jakarta.persistence.jdbc.url" value="jdbc:sqlserver://localhost:1433;databaseName=Northwind;encrypt=false"/> <property name="jakarta.persistence.jdbc.user" value="sa"/> <property name="jakarta.persistence.jdbc.password" value="pruebas123."/> <property name="jakarta.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/> <property name="hibernate.hbm2ddl.auto" value="none"/> </properties> ``````js import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; public class Factory { private static final EntityManagerFactory emf = buildEntityManagerFactory(); private static EntityManagerFactory buildEntityManagerFactory(){ return Persistence.createEntityManagerFactory("dbcontext"); } public static EntityManager getEntityManager(){ return emf.createEntityManager(); } } ```
# Consulta HQL en Hibernate `em.createQuery("Select e from Employee e", Employee.class).getResultList();` Si quieren entender mas a fondo esa consulta, investiguen sobre HQL en Hibernate.