Hibernate – Anotaciones

La anotación en JAVA se utiliza para representar información complementaria. Como ha visto, @override, @inherited, etc. son un ejemplo de anotaciones en el lenguaje Java general. Para profundizar, consulte Anotaciones en Java.En este artículo, discutiremos las anotaciones referidas a hibernate. Entonces, el motivo de usar una hibernación es omitir la parte de SQL y enfocarse en los conceptos básicos de Java. Generalmente, en hibernación, usamos archivos de mapeo XML para convertir nuestros datos de clases POJO en datos de base de datos y viceversa. Pero usar XML se vuelve un poco confuso, por lo que, en lugar de usar XML, usamos anotaciones dentro de nuestras clases POJO directamente para declarar los cambios. Además, el uso de anotaciones dentro de las clases POJO hace que las cosas sean simples de recordar y fáciles de usar. La anotación es un método poderoso para proporcionar metadatos para las tablas de la base de datos y también brinda información breve sobre la estructura de la tabla de la base de datos y también las clases POJO simultáneamente. 

Configuración del proyecto de anotaciones de Hibernate

Se recomienda configurar el proyecto Maven para hibernar porque resulta fácil copiar y pegar la dependencia del repositorio oficial de Maven en su pom.xml.

Paso 1: Crear Proyecto Maven (Intellj)

Vaya al siguiente y asigne un nombre a un proyecto y haga clic para finalizar.

Paso 2: agregue la dependencia al archivo pom.xml

Después de configurar un proyecto maven, de forma predeterminada, obtiene un archivo POM.xml que es un archivo de dependencia. POM significa modelo de objeto de proyecto, que nos permite agregar o eliminar dependencias de 1 ubicación.

La estructura del proyecto y pom.xml deberían verse así. Ahora, agregue la dependencia de hibernación y MySQL para usar anotaciones para crear una tabla y usar HQL (lenguaje de consulta de hibernación).

archivo pom.xml

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>Hibernateproject</artifactId>
    <version>1.0-SNAPSHOT</version>
 
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
 
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.6.5.Final</version>
        </dependency>
 
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
 
    </dependencies>
 
</project>

Asegúrese de agregar la dependencia y debería verse como el archivo anterior.

Paso 3: agregue el archivo hibernate.cfg.xml para los parámetros de la base de datos

Usamos el archivo hibernate.cfg.xml para proporcionar todos los parámetros de la base de datos relacionados, como el nombre de usuario de la base de datos, la contraseña, el host local, etc. Asegúrese de crear hibernate.cfg.xml dentro de la carpeta de recursos.

hibernate.cfg.xml

XML

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
           
          <!--the path of database drivers-->
        <property name = "hibernate.connection.driver_class">
            com.mysql.cj.jdbc.Driver
        </property>
 
        <!-- Assume test is the database name -->
        <property name = "hibernate.connection.url">
            jdbc:mysql://localhost:3306/student
        </property>
         
          <!-- Your database username-->
        <property name = "hibernate.connection.username">
            root 
        </property>
 
        <property name = "hibernate.connection.password">
            your_password
        </property>
 
           <!-- We use dialect to provide information about which
               database we are using, we are using mysql -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
 
           <!-- This property enables us to update the
               table everytime the program runs-->
        <property name="hbm2ddl.auto">update</property>
 
        <!-- List of XML mapping files -->
          <!-- path of a mapping file, for us its our
             STudent class which is a POJO -->
        <mapping class="com.student.Student"/>
 
    </session-factory>
   
</hibernate-configuration>

El archivo debe verse como arriba

Paso 4: agregue POJO y clases principales para trabajar con la funcionalidad

Aquí hay algunas anotaciones utilizadas en nuestro POJO específicamente para hibernate-

Anotaciones

uso de anotaciones

@Entidad  Se utiliza para declarar cualquier clase POJO como entidad para una base de datos.
@Mesa

Se utiliza para cambiar los detalles de la tabla, algunos de los atributos son:

  • nombre: reemplaza el nombre de la tabla
  • esquema
  • Catálogo
  • hacer cumplir contratos únicos
@Identificación Usado para declarar una clave primaria dentro de nuestra clase POJO
@ValorGenerado Hibernate genera automáticamente los valores con referencia a la secuencia interna y no necesitamos establecer los valores manualmente.
@Columna

Se utiliza para especificar asignaciones de columnas. Significa que si en caso de que no necesitemos el nombre de la columna que declaramos en POJO pero necesitamos referirnos a esa entidad, puede cambiar el nombre de la tabla de la base de datos. Algunos atributos son-

  • Nombre – Podemos cambiar el nombre de la entidad para la base de datos
  • longitud: el tamaño de la columna que se usa principalmente en las strings
  • único: la columna está marcada para contener solo valores únicos
  • anulable: los valores de la columna no deben ser nulos. Está marcado como NO
@Transitorio Le dice a Hibernate que no agregue esta columna en particular
@Temporal Esta anotación se utiliza para formatear la fecha para almacenarla en la base de datos.
@Lob Se usa para decirle a Hibernate que es un objeto grande y no un objeto simple
@OrdenarPor

Esta anotación le dirá hibernate a OrderBy como lo hacemos en SQL.

Por ejemplo, necesitamos ordenar por nombre de estudiante en orden ascendente

@OrderBy(“nombre asc”) 

Estas son algunas anotaciones que se utilizan principalmente para trabajar con hibernación.

Student.java (clase POJO)

Java

package com.student;
import javax.persistence.*;
 
// Entity is declare to make this class an object for the
// database
@Entity
// By default hibernate will name the table Student as class
// name but @Table annotation override it to students
@Table(name = "students")
public class Student {
    // @id make stuid as a primary key and @GeneratedValue
    // auto increment
    @Id
    @GeneratedValue
    // This will override and make column name id in place
    // of stuid
    @Column(name = "id")
    private int stuid;
    // This will override and make column name full name in
    // place of name
    @Column(name = "Full_name") private String name;
    // This will override and make column name Age in place
    // of age
    @Column(name = "Age") private int age;
    // This will override and make column name Department in
    // place of stream
    @Column(name = "Department") private String stream;
 
    //    Basic getters and setters to set and get values
    public int getStuid() { return stuid; }
 
    public void setStuid(int stuid) { this.stuid = stuid; }
 
    public String getName() { return name; }
 
    public void setName(String name) { this.name = name; }
 
    public int getAge() { return age; }
 
    public void setAge(int age) { this.age = age; }
 
    public String getStream() { return stream; }
 
    public void setStream(String stream)
    {
        this.stream = stream;
    }
}

Main.java (clase de acción)

Java

package com.student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
 
public class Main {
    public static void main(String[] args)
    {
 
        // Setting the objects
        Student s = new Student();
        s.setStuid(1);
        s.setName("Geek");
        s.setAge(22);
        s.setStream("Computer science");
 
        // activate hibernate network
        Configuration cfg = new Configuration();
 
        // We use sessionfactory to build a session for
        // database and hibernate
        SessionFactory factory
            = cfg.configure("hibernate.cfg.xml")
                  .buildSessionFactory();
 
        // opening a session
        Session session = factory.openSession();
 
        // Transaction is a java object used to give the
        // instructions to database
        Transaction tx = session.beginTransaction();
 
        // we use save to provide the object to push in
        // database table
        session.save(s);
 
        // commit is a transaction function used to push
        // some changes to database with reference to hql
        // query
        tx.commit();
 
        session.close();
    }
}

Producción:

Output

Publicación traducida automáticamente

Artículo escrito por shiv_ka_ansh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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