Hibernate: mapeo de uno a muchos

Spring Boot está construido en la parte superior del resorte y contiene todas las características del resorte. Spring también proporciona JPA e hibernate para aumentar la eficiencia de manipulación de datos entre la aplicación Spring y la base de datos. En términos muy simples, podemos decir que JPA (api de persistencia de Java) es como una interfaz y la hibernación es la implementación de los métodos de la interfaz . La forma en que se desactivará la inserción ya está definida con la ayuda de la hibernación. En este artículo, discutiremos el mapeo de uno a muchos en Hibernate. Entendamos el mapeo de uno a muchos con la ayuda de un ejemplo de la vida real. El fabricante de bicicletas puede fabricar varios modelos de bicicletas, pero el mismo modelo de bicicleta no puede ser fabricado por varios fabricantes.

Sintaxis :

@oneToMany(asignadopor=”nombredelavariableasignada”) 

Esta variable mapeada de las otras tablas es responsable del mapeo entre dos tablas.

Spring Initializer es una herramienta basada en web con la que podemos generar fácilmente la estructura del proyecto Spring Boot. También proporciona varias características diferentes para los proyectos expresados ​​en un modelo de metadatos. Este modelo nos permite configurar la lista de dependencias que admite JVM. Aquí, crearemos la estructura de una aplicación utilizando un inicializador de resorte.

Ejemplo

Paso 1: Ve a este enlace . Complete los detalles según los requisitos. Para esta aplicación:

Project: Maven
Language: Java
Spring Boot: 2.5.7
Packaging: JAR
Java: 11
Dependencies: Spring Web,Spring Data JPA, MySql Driver

Haga clic en Generar, que descargará el proyecto inicial.

Paso 2 : extraiga el archivo zip. Ahora abra un IDE adecuado y luego vaya a Archivo > Nuevo > Proyecto de fuentes existentes > Spring-boot-app y seleccione pom.xml. Haga clic en importar cambios en el aviso y espere a que el proyecto se sincronice como se muestra a continuación:

Estructura del proyecto:

Mapeo de uno a muchos

Paso 3: Agregar las propiedades necesarias en el archivo application.properties. (mapeo es el nombre de la base de datos)

spring.datasource.username=root
spring.datasource.password=Aayush
spring.datasource.url=jdbc:mysql://localhost:3306/mapping
spring.jpa.hibernate.ddl-auto=update

Paso 4: Vaya a src->main->java->com->example->Mapping y cree dos archivos en la carpeta de modelos, es decir, Manufactures.java y Model.java

Estructura del proyecto:

Manufacturas.java

Java

package com.example.Mapping.Models;
 
import javax.persistence.*;
import java.util.List;
 
@Entity
public class Manufactures {
   
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    
    // One manufactures can produces
    // multiple models of the bike
    private  String manufactures_name;
 
    @OneToMany(mappedBy ="ob")
 
    private List<Model>models;
 
    public Manufactures(int id, String manufactures_name) {
        this.id = id;
        this.manufactures_name = manufactures_name;
    }
   
    Manufactures(){
 
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getManufactures_name() {
        return manufactures_name;
    }
 
    public void setManufactures_name(String manufactures_name) {
        this.manufactures_name = manufactures_name;
    }
}

Modelos (asignados por tabla)

Java

package com.example.Mapping.Models;
 
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
 
@Entity
public class Model {
   
    @Id
    private int model_id;
 
    private String name;
 
    @ManyToOne
    @JoinColumn(name = "manufacture_id")
    private Manufactures ob;
 
    public Model(int model_id, String name, Manufactures ob) {
        this.model_id = model_id;
        this.name = name;
        this.ob = ob;
    }
   
    Model(){
 
    }
 
    public int getModel_id() {
        return model_id;
    }
 
    public void setModel_id(int model_id) {
        this.model_id = model_id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Manufactures getOb() {
        return ob;
    }
 
    public void setOb(Manufactures ob) {
        this.ob = ob;
    }
}

Paso 5: Agregar el repositorio JPA de ambas clases en la estructura del proyecto:

ManufacturaRepo

Java

package com.example.Mapping.Reposteries;
 
import com.example.Mapping.Models.Manufactures;
import org.springframework.data.jpa.repository.JpaRepository;
 
public interface ManufacturesRepo extends JpaRepository<Manufactures,Integer> {
   
}

ModelRepo:

Java

package com.example.Mapping.Reposteries;
 
import com.example.Mapping.Models.Model;
import org.springframework.data.jpa.repository.JpaRepository;
 
public interface ModelRepo extends JpaRepository<Model, Integer> {
}

Aplicación de mapeo:

Java

package com.example.Mapping;
 
import com.example.Mapping.Models.Manufactures;
import com.example.Mapping.Models.Model;
import com.example.Mapping.Reposteries.ManufacturesRepo;
import com.example.Mapping.Reposteries.ModelRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class MappingApplication implements CommandLineRunner {
 
    @Autowired
    ManufacturesRepo manufacturesRepo;
   
    @Autowired
    ModelRepo modelRepo;
 
    public static void main(String[] args) {
        SpringApplication.run(MappingApplication.class, args);
    }
     
    @Override
    public void run(String... args) throws Exception {
     
    Manufactures data=new Manufactures(1,"Honda");
    
    // Inserting the record in the Manufactures table.
    manufacturesRepo.save(data);
    
        // Now try to mapped above record with multiple models
        Model model1=new Model(1,"AYZ",data);
        Model model2=new Model(2,"ZET",data);
        modelRepo.save(model1);
        modelRepo.save(model2);
 
    }
}

Ejecute la aplicación principal:

mesa de fabricacion

mesa modelo

Publicación traducida automáticamente

Artículo escrito por zack_aayush 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 *