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:
|
@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-
|
@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:
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