Hibernate es un marco ORM (Mapeo relacional de objetos) de código abierto que proporciona operaciones CRUD en forma de objetos. Es un marco no invasivo. Se puede utilizar para desarrollar DataAcessLayer para todos los proyectos de Java. No depende del servidor. Significa que el código de hibernación se ejecuta sin un servidor y también con un servidor. Es una capa superior de JDBC, JTA y JNDI Technologies. Sigue el concepto ORM
- ORM es un concepto teórico
- Hace que la programación o el desarrollo esté en el proceso de orientación a objetos.
Hibernate admite la programación orientada a objetos mediante el uso de conceptos de mapeo. El programador debe realizar esta asignación, luego hibernate insertará los objetos en la tabla de la base de datos como una fila y la fila se puede volver a convertir en un objeto sin ninguna consulta SQL escrita por el programador.
Asociaciones en Hibernate
La clase principal debe tener una referencia de clase secundaria con o sin tipo de colección. Esta asociación también puede seguir a la multiplicidad como
- Cara a cara
- Uno a muchos
- Muchos a uno
- Muchos a muchos
Aquí estos se dividen en dos tipos que son
Tipo de no colección:
- Cara a cara
- Muchos a uno
Tipo de colección:
- Uno a muchos
- Muchos a muchos
Aquí vamos a discutir el mapeo Many-To-One desarrollado usando SpringBoot Data JPA en STS (Spring Tool Suite)
Bota de primavera
SpringBoot es una extensión del marco basado en resortes que elimina la configuración repetitiva requerida para la configuración de la aplicación basada en resortes. Básicamente, se basa en Spring Framework para reducir básicamente una gran cantidad de configuración necesaria para configurar una aplicación basada en Spring. El objetivo principal de SpringBoot es reducir el código común escrito por los programadores, lo que se denomina Autoconfiguración. Data JPA proporciona @NoRepositoryBean, que se configura automáticamente y se implementa la lógica propia para las operaciones básicas. Simplemente, JPA (API de persistencia de Java) es una interfaz. Hibernate proporciona la implementación de los métodos de interfaz.
Mapeo de muchos a uno
En este artículo, discutiremos el mapeo de muchos a uno con la ayuda de un ejemplo. Muchos empleados trabajan en la misma empresa, por lo que todos los empleados que trabajan tienen la misma dirección de la empresa. Muchos empleados tienen una dirección
Java
// Syntax @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "Foreign key column")
Pasos para crear un proyecto Spring Boot usando STS
Paso 1: Abra el STS (Spring Tool Suite)
Paso 2: haga clic en el menú Archivo -> seleccione Nuevo -> seleccione Spring Starter Project, luego se abre una nueva ventana que proporciona los detalles requeridos como Nombre, Grupo, Artefacto, versión de Java, etc.
Paso 3: ingrese el nombre del proyecto, ingrese el artefacto, el grupo, luego haga clic en -> Siguiente -> luego se abrirá otra ventana nueva en la que proporcionará la versión de SpringBoot y las dependencias requeridas para este proyecto (Spring Data Jpa y MySql Driver) Las dependencias son Se requiere agregar estas dependencias y luego hacer clic en–>Finalizar.
Luego, el proyecto se crea en el nombre del editor como GFG-MAPPING-PROJECT. La estructura del proyecto se ve a continuación.
Paso 4:
Vaya a src/main/resources open application.properties para agregar las propiedades necesarias como se muestra a continuación
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/schemaname spring.datasource.username=root spring.datasource.password=password spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
Paso 5:
Vaya a src/main/java, cree un paquete para las clases modelo (por ejemplo, com.gfg.model) y cree un paquete para el repositorio (por ejemplo, com.gfg.repository). A continuación, cree dos clases de modelos en el paquete de modelos.
- Empleado.java
- Dirección.java
Empleado.java
Java
package com.gfg.model; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Entity public class Employee { @Id private int empId; private String empName; // Many employees has one company address @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "address_id") private Address address; public Employee(int empId, String empName, Address address) { super(); this.empId = empId; this.empName = empName; this.address = address; } public Employee() { super(); } @Override public String toString() { return "Employee []"; } public int getEmpId() { return empId; } public void setEmpId(int empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
Dirección.java
Java
package com.gfg.model; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Address { @Id private int addressId; private String location; @OneToMany(cascade = CascadeType.ALL, mappedBy = "address") private List<Employee> employee = new ArrayList<>(); public Address(int addressId, String location) { super(); this.addressId = addressId; this.location = location; } public Address() { super(); } public int getAddressId() { return addressId; } public void setAddressId(int addressId) { this.addressId = addressId; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public List<Employee> getEmployee() { return employee; } public void setEmployee(List<Employee> employee) { this.employee = employee; } }
Paso 6:
Ir al paquete del repositorio agregando el repositorio JPA de ambas clases de modelos
EmpleadoRepo.java
Java
package com.gfg.repository; import org.springframework.data.jpa.repository.JpaRepository; import com.gfg.model.Employee; public interface EmployeeRepo extends JpaRepository<Employee,Integer>{ }
DirecciónRepo.java
Java
package com.gfg.repository; import org.springframework.data.jpa.repository.JpaRepository; import com.gfg.model.Address; public interface AddressRepo extends JpaRepository<Address,Integer>{ }
Paso 7: Vaya a la clase de inicio Autowire dos interfaces de repositorio y cree objetos para clases modelo
GfgMappingProjectApplication.java
Java
package com.gfg; import com.gfg.model.Address; import com.gfg.model.Employee; import com.gfg.repository.AddressRepo; import com.gfg.repository.EmployeeRepo; 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 GfgMappingProjectApplication implements CommandLineRunner { @Autowired AddressRepo addessRepo; @Autowired EmployeeRepo empRepo; public static void main(String[] args) { SpringApplication.run( GfgMappingProjectApplication.class, args); } @Override public void run(String... args) throws Exception { Address addr = new Address(1, "Bangloor"); addessRepo.save(addr); Employee emp1 = new Employee(1, "Alpha", addr); Employee emp2 = new Employee(2, "Beeta", addr); empRepo.save(emp1); empRepo.save(emp2); } }
Paso 8: Ejecute la aplicación principal
Haga clic derecho en GfgMappingProjectApplication seleccione Ejecutar como aplicación de arranque de primavera
Luego vaya a Base de datos y luego verifique las tablas.
Tabla de direcciones:
select * from address;
Tabla de empleados:
select * from employee;
Publicación traducida automáticamente
Artículo escrito por veeracharyu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA