¿Qué es Maven?
Maven es una herramienta de gestión y construcción de proyectos para Java. Facilita:
- Dependencias: descarga y gestiona librerías automáticamente.
- Ciclo de vida de build: compilar, testear, empaquetar y desplegar.
- Estructura estándar: organización de código y recursos.
mi-proyecto/
├─ src/
│ ├─ main/
│ │ ├─ java/ <-- código fuente
│ │ └─ resources/ <-- config (application.properties, etc.)
│ └─ test/
│ ├─ java/
│ └─ resources/
└─ pom.xml <-- configuración de Maven
pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ejemplo</groupId>
<artifactId>intro-maven-hibernate</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hibernate.version>6.4.0.Final</hibernate.version>
<jakarta.persistence.version>3.1.0</jakarta.persistence.version>
</properties>
<dependencies>
<!-- JPA API -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>${jakarta.persistence.version}</version>
</dependency>
<!-- Hibernate Core -->
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- Driver de base de datos (PostgreSQL) -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.3</version>
</dependency>
<!-- Opcional: Lombok para reducir boilerplate -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
¿Qué es Hibernate?
Hibernate es un ORM (Object-Relational Mapping) que implementa JPA. Permite mapear clases Java a tablas de base de datos y manejar operaciones CRUD sin escribir SQL manual para cada caso.
Entidad JPA
import jakarta.persistence.*;
@Entity
@Table(name = "productos")
public class Producto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 120)
private String nombre;
@Column(nullable = false)
private Double precio;
// getters/setters...
}
Configuración (persistence.xml)
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="https://jakarta.ee/xml/ns/persistence"
version="3.0">
<persistence-unit name="miPU">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.ejemplo.Producto</class>
<properties>
<property name="jakarta.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5432/mi_db"/>
<property name="jakarta.persistence.jdbc.user" value="postgres"/>
<property name="jakarta.persistence.jdbc.password" value="postgres"/>
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<!-- Opciones de Hibernate -->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Uso básico con EntityManager
import jakarta.persistence.*;
public class App {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("miPU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Producto p = new Producto();
p.setNombre("Café");
p.setPrecio(3.5);
em.persist(p);
em.getTransaction().commit();
em.close();
emf.close();
}
}
Integración Maven + Hibernate
- Crear proyecto Maven con estructura estándar y
pom.xml. - Agregar dependencias de JPA, Hibernate y el driver de BD.
- Configurar
persistence.xmlcon credenciales y propiedades. - Crear entidades anotadas con JPA.
- Usar EntityManager para operaciones CRUD.
hibernate.hbm2ddl.auto=update. Usa migraciones (Flyway/Liquibase) para controlar cambios de esquema.