Hibernate es un marco Java ORM (mapeo relacional de objetos) de código abierto, no invasivo y liviano que se utiliza para desarrollar una lógica de persistencia que es independiente del software de la base de datos. Un marco ORM (mapeo relacional de objetos) simplifica la creación de datos, la manipulación de datos y el acceso a datos. Es una técnica de programación que asigna el objeto a los datos almacenados en la base de datos. Utiliza internamente la API de JDBC para interactuar con la base de datos.
Dialectos SQL
Dialect es una clase que actúa como un puente entre los tipos Java JDBC y los tipos SQL , que contiene la asignación entre el tipo de datos del lenguaje Java y el tipo de datos de la base de datos. Dialect permite a Hibernate generar SQL optimizado para una base de datos relacional en particular. Hibernate genera consultas para la base de datos específica en función de la clase Dialect . Un dialecto de hibernación brinda información al marco de cómo convertir consultas de hibernación (HQL) en consultas SQL nativas .
Dado que Hibernate es independiente de la base de datos. Puede trabajar con diferentes bases de datos. Sin embargo, las bases de datos tienen extensiones propietarias/variaciones nativas de SQL y conjuntos/subconjuntos de implementaciones estándar de SQL. Debido a esto, Hibernate tiene que usar SQL específico de la base de datos. El dialecto especifica el tipo de base de datos utilizada en hibernate para que hibernate pueda cambiar al código generador de SQL específico de la base de datos. Los dialectos se pueden utilizar de las siguientes maneras:
- Para generar consultas de SQL optimizado
- Para interactuar con una Base de datos en particular si la aplicación funciona con la ayuda de más de una Base de datos.
- Para establecer valores predeterminados para las propiedades del archivo de configuración de hibernación según el software de la base de datos, aunque no estén especificados en el archivo de configuración.
Configuración de dialectos SQL
El dialecto SQL convierte la consulta HQL que escribimos en Java o cualquier otro programa orientado a objetos en la consulta SQL de la base de datos específica. Para conectar cualquier aplicación de hibernación con la base de datos, se requiere proporcionar la configuración del dialecto SQL. Podemos proporcionarlo en hibernate.cfg.xml (dialecto DB2) como:
<configuración de hibernación>
<nombre de la fábrica de sesiones=”fábrica de sesiones”>
<nombre de la propiedad=”hibernate.dialect”> org.hibernate.dialect.DB2Dialect </property>
</sesión-fábrica>
</hibernate-configuration>
También podemos especificar en el archivo de propiedades como:
hibernate.dialect=org.hibernate.dialect.DB2Dialect
La propiedad hibernate.dialect hace que Hibernate genere las declaraciones SQL apropiadas para la base de datos específica dada.
Configuración de Hibernate: dialecto de MySQL
Configuración config = nueva configuración()
.addClass(org.javabydeveloper.dominio.Estudiante.clase)
.setProperty(“hibernate.dialect”, “ org.hibernate.dialect.MySQL5Dialect ”)
.setProperty(“hibernate.connection.datasource”, “jdbc:mysql://localhost:3380/<dbname>”)
.setProperty(“hibernate.order_updates”, “true”);
Configuración en hibernate.cfg.xml (MySQL8) :
<nombre de propiedad=”conexión.url”>jdbc:mysql://localhost:3380/jpa_jbd?serverTimezone=UTC&useSSL=false</propiedad>
<property name=”connection.username”>usuario</property>
<nombre de la propiedad=”conexión.contraseña”>contraseña</propiedad>
<property name=”connection.driver_class”>com.mysql.jdbc.Driver</property>
<property name=”dialecto”> org.hibernate.dialect.MySQL8Dialect </property>
Lista de dialectos SQL en Hibernate
Todos los dialectos de Hibernate están disponibles en el paquete org.hibernate.dialect . A continuación se muestra la popular Lista de dialectos SQL en Hibernate.
RDBMS |
Dialectos |
---|---|
DB2 | org.hibernate.dialect.DB2Dialect |
DB2 AS/400 | org.hibernate.dialect.DB2400Dialect |
DB2 OS390 | org.hibernate.dialect.DB2390Dialect |
postgresql | org.hibernate.dialect.PostgreSQLDialect |
MySQL5 | org.hibernate.dialect.MySQL5Dialect |
MySQL5 con InnoDB | org.hibernate.dialect.MySQL5InnoDBDialect |
MySQL con MyISAM | org.hibernate.dialect.MySQLMyISAMDialect |
Oracle (cualquier versión) | org.hibernate.dialect.OracleDialect |
oráculo 9i | org.hibernate.dialect.Oracle9iDialect |
Sybase | org.hibernate.dialect.SybaseASE15Dialect |
Microsoft SQL Server 2000 | org.hibernate.dialect.SQLServerDialect |
Microsoft SQL Server 2008 | org.hibernate.dialect.SQLServer2008Dialect |
Base de datos SAP | org.hibernate.dialect.SAPDBDialect |
Informix | org.hibernate.dialect.InformixDialect |
SQL hipersónico | org.hibernate.dialect.HSQLDialect |
Base de datos H2 | org.hibernate.dialect.H2Dialect |
Ingres | org.hibernate.dialect.IngresDialect |
Progreso | org.hibernate.dialect.ProgressDialect |
McKoi SQL | org.hibernate.dialect.MckoiDialect |
interbase | org.hibernate.dialect.InterbaseDialect |
base de puntos | org.hibernate.dialect.PointbaseDialect |
FrontBase | org.hibernate.dialect.FrontbaseDialect |
pájaro de fuego | org.hibernate.dialect.FirebirdDialect |
La propiedad hibernate.dialect debe establecerse en la subclase org.hibernate.dialect.Dialect correcta para la base de datos de la aplicación. Si la clase de dialecto no se especifica en la configuración, para la mayoría de las bases de datos, Hibernate intenta resolver los nombres de los dialectos de las conexiones de la base de datos. Pero es mejor proporcionar el dialecto para que Hibernate identifique la clase de dialecto adecuada para versiones específicas de la base de datos.