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