Hibernate - Descripción general de ORM

¿Qué es JDBC?

JDBC son las siglas de Java Database Connectivity. Proporciona un conjunto de API de Java para acceder a las bases de datos relacionales desde el programa Java. Estas API de Java permiten que los programas de Java ejecuten sentencias de SQL e interactúen con cualquier base de datos compatible con SQL.

JDBC proporciona una arquitectura flexible para escribir una aplicación independiente de base de datos que puede ejecutarse en diferentes plataformas e interactuar con diferentes DBMS sin ninguna modificación.

Pros y contras de JDBC

Ventajas de JDBC Contras de JDBC

Procesamiento SQL limpio y simple

Buen rendimiento con grandes datos

Muy bueno para pequeñas aplicaciones

Sintaxis simple tan fácil de aprender

Complejo si se utiliza en grandes proyectos

Gran sobrecarga de programación

Sin encapsulación

Difícil de implementar el concepto MVC

La consulta es específica de DBMS

¿Por qué el mapeo relacional de objetos (ORM)?

Cuando trabajamos con un sistema orientado a objetos, existe un desajuste entre el modelo de objetos y la base de datos relacional. Los RDBMS representan datos en formato tabular, mientras que los lenguajes orientados a objetos, como Java o C #, los representan como un gráfico interconectado de objetos.

Considere la siguiente clase Java con los constructores adecuados y la función pública asociada:

public class Employee {
   private int id;
   private String first_name; 
   private String last_name;   
   private int salary;  

   public Employee() {}
   public Employee(String fname, String lname, int salary) {
      this.first_name = fname;
      this.last_name = lname;
      this.salary = salary;
   }
   
   public int getId() {
      return id;
   }
   
   public String getFirstName() {
      return first_name;
   }
   
   public String getLastName() {
      return last_name;
   }
   
   public int getSalary() {
      return salary;
   }
}

Tenga en cuenta que los objetos anteriores deben almacenarse y recuperarse en la siguiente tabla RDBMS:

create table EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

Primer problema, ¿y si necesitamos modificar el diseño de nuestra base de datos después de haber desarrollado algunas páginas o nuestra aplicación? En segundo lugar, cargar y almacenar objetos en una base de datos relacional nos expone a los siguientes cinco problemas de desajuste:

No Señor. Discrepancia y descripción
1

Granularity

A veces, tendrá un modelo de objetos, que tiene más clases que el número de tablas correspondientes en la base de datos.

2

Inheritance

Los RDBMS no definen nada similar a la herencia, que es un paradigma natural en los lenguajes de programación orientados a objetos.

3

Identity

Un RDBMS define exactamente una noción de "igualdad": la clave principal. Java, sin embargo, define tanto la identidad del objeto (a == b) como la igualdad del objeto (a.equals (b)).

4

Associations

Los lenguajes orientados a objetos representan asociaciones que utilizan referencias a objetos, mientras que un RDBMS representa una asociación como una columna de clave externa.

5

Navigation

Las formas de acceder a los objetos en Java y en RDBMS son fundamentalmente diferentes.

los Object-Rexultante Mapping (ORM) es la solución para manejar todos los desajustes de impedancia anteriores.

¿Qué es ORM?

ORM significa Object-Rexultante Mapping (ORM) es una técnica de programación para convertir datos entre bases de datos relacionales y lenguajes de programación orientados a objetos como Java, C #, etc.

Un sistema ORM tiene las siguientes ventajas sobre JDBC simple:

No Señor. Ventajas
1 Vamos a acceder a objetos de código empresarial en lugar de tablas de base de datos.
2 Oculta los detalles de las consultas SQL de la lógica OO.
3 Basado en JDBC 'bajo el capó'.
4 No es necesario lidiar con la implementación de la base de datos.
5 Entidades basadas en conceptos comerciales en lugar de estructura de base de datos.
6 Gestión de transacciones y generación automática de claves.
7 Rápido desarrollo de la aplicación.

Una solución ORM consta de las siguientes cuatro entidades:

No Señor. Soluciones
1 Una API para realizar operaciones CRUD básicas en objetos de clases persistentes.
2 Un lenguaje o API para especificar consultas que hacen referencia a clases y propiedades de clases.
3 Una función configurable para especificar metadatos de mapeo.
4 Una técnica para interactuar con objetos transaccionales para realizar comprobaciones sucias, búsqueda de asociaciones perezosas y otras funciones de optimización.

Frameworks de Java ORM

Hay varios marcos persistentes y opciones de ORM en Java. Un marco persistente es un servicio ORM que almacena y recupera objetos en una base de datos relacional.

  • Beans de entidad Enterprise JavaBeans
  • Objetos de datos Java
  • Castor
  • TopLink
  • Primavera DAO
  • Hibernate
  • Y muchos más