Hibernate: dialectos SQL

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.

Publicación traducida automáticamente

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