DEV Community

GUADAPOL AUTOMATIZACIONES
GUADAPOL AUTOMATIZACIONES

Posted on

CRUD CON JAVA CON HIBERTANTE (DEMO) GUIA PARA PERSONAL EN PRACTICAS(1-3) NIVEL 2

GUIA PRACTICA DESDE 0 PARA PROYECTOS EN HIBERNATE USANDO JAVA
CRUD BASICO

  • HibernateUtil.java
package org.example;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            return new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Error en la creacion de SessionFactory: " + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        getSessionFactory().close();
    }
}
Enter fullscreen mode Exit fullscreen mode

Registro.java

package org.example;

import jakarta.persistence.*;

@Entity
@Table(name = "registros")
public class Registro {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, length = 100)
    private String nombre;

    @Column
    private String email;

    @Column
    private int edad;

    // Constructor vacío obligatorio
    public Registro() {}

    // Constructor con parámetros
    public Registro(String nombre, String email, int edad) {
        this.nombre = nombre;
        this.email = email;
        this.edad = edad;
    }

    // Getters y Setters
    public Long getId() {
        return id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    @Override
    public String toString() {
        return "Registro{" +
                "id=" + id +
                ", nombre='" + nombre + '\'' +
                ", email='" + email + '\'' +
                ", edad=" + edad +
                '}';
    }
}

Enter fullscreen mode Exit fullscreen mode

Main.java

package org.example;

import org.hibernate.Session;
import org.hibernate.Transaction;

import java.util.List;

public class Main {

    public static void main(String[] args) {

        listarRegistros();

        // Cerrar SessionFactory
        HibernateUtil.shutdown();
    }

    public static void crearRegistro(String nombre, String email, int edad) {
        Transaction transaction = null;

        try (Session session = HibernateUtil.getSessionFactory().openSession()) {

            transaction = session.beginTransaction();

            Registro registro = new Registro(nombre, email, edad);
            session.persist(registro);

            transaction.commit();
            System.out.println("Registro creado: " + registro);

        } catch (Exception e) {
            if (transaction != null) transaction.rollback();
            e.printStackTrace();
        }
    }

    public static void listarRegistros() {
        try (Session session = HibernateUtil.getSessionFactory().openSession()) {

            List<Registro> registros = session
                    .createQuery("FROM Registro", Registro.class)
                    .list();

            System.out.println("\n=== Lista de Registros ===");
            registros.forEach(System.out::println);
        }
    }

    public static void actualizarRegistro(Long id, String nuevoNombre) {
        Transaction transaction = null;

        try (Session session = HibernateUtil.getSessionFactory().openSession()) {

            transaction = session.beginTransaction();

            Registro registro = session.get(Registro.class, id);

            if (registro != null) {
                registro.setNombre(nuevoNombre);
                session.merge(registro);
                System.out.println("Registro actualizado: " + registro);
            }

            transaction.commit();

        } catch (Exception e) {
            if (transaction != null) transaction.rollback();
            e.printStackTrace();
        }
    }

    public static void eliminarRegistro(Long id) {
        Transaction transaction = null;

        try (Session session = HibernateUtil.getSessionFactory().openSession()) {

            transaction = session.beginTransaction();

            Registro registro = session.get(Registro.class, id);

            if (registro != null) {
                session.remove(registro);
                System.out.println("Registro eliminado con ID: " + id);
            }

            transaction.commit();

        } catch (Exception e) {
            if (transaction != null) transaction.rollback();
            e.printStackTrace();
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver
</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost:3727/registro
</property>

<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">RootRott</property>
<property 
name="hibernate.dialect">org.hibernate.dialect.MySQLDialect 
</property>

<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>

<mapping class="org.example.Usuario"/>
</session-factory>
</hibernate-configuration>
Enter fullscreen mode Exit fullscreen mode

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
    <artifactId>untitled1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>24</maven.compiler.source>
        <maven.compiler.target>24</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!-- Hibernate Core -->
        <dependency>
            <groupId>org.hibernate.orm</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>6.2.2.Final</version>
        </dependency>

        <!-- MySQL Connector -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>9.1.0</version>
        </dependency>
    </dependencies>
</project>
Enter fullscreen mode Exit fullscreen mode

☺️ guadapol.auto@gmail.com

Top comments (0)