Las consultas nativas son consultas expresadas a través del lenguaje de consulta estructurado (SQL) y son métodos concisos y seguros de tipos de expresión de consulta C ++ y Java. El uso de consultas nativas es beneficioso en la utilización de funciones específicas en bases de datos, incluidas sugerencias de consulta y ciertas funciones específicas de la base de datos. También son útiles para proporcionar rutas limpias de migración directamente desde aplicaciones que utilizan SQL o Java Database Connectivity (JDBC ™). Las consultas nativas se utilizan para proporcionar resultados que constan de valores escalares, entidades o ambos. Estos tipos de consultas admiten el uso de SQL nativo en una base de datos de destino.
Estos tipos de consultas pueden superar las deficiencias de una interfaz de programación de aplicaciones (API) basada en cadenas. Las consultas de este tipo se utilizan en una base de datos de objetos, donde la persistencia del objeto es una tarea común para los programadores y una característica común de la base de datos. Sin embargo, las consultas no nativas parecen ajenas a los programas orientados a objetos debido a que sus expresiones son cadenas simples y gráficos de objetos que contienen cadenas intercaladas.
Las consultas nativas ayudan a aliviar los problemas que enfrentan las bases de datos al expresar una consulta dentro de Java y C ++. Las consultas se pueden escribir sin una API o un lenguaje de consulta personalizado. Además, un entorno de desarrollo integrado (IDE) puede ayudar a reducir los errores tipográficos. Las consultas nativas serían seguras para los tipos al máximo y se podrían acceder a ellas mediante las funciones de refactorización de un IDE. Finalmente, las consultas se pueden ejecutar, probar y crear prototipos contra colecciones de memoria simple sin el back-end de una base de datos.
Las consultas y el SQL que las acompaña no son necesariamente transferibles a otras bases de datos. Tras la devolución de muchas entidades mediante una consulta nativa en particular, estas mismas entidades deben especificarse, así como mapearse, a los resultados de las columnas en declaraciones SQL en un programa de software de mapeo de definición de metadatos. Como resultado, estos pueden usarse para mapear los resultados de JDBC por tiempo de ejecución persistente en los objetos esperados. El uso del parámetro de nombre nunca está definido para este tipo de consultas y las aplicaciones portátiles solo pueden usar el enlace de parámetros posicionales para consultas SQL nativas. El soporte de combinaciones se limita a relaciones de valores únicos.
Para utilizar consultas nativas, un programador debe describir un conjunto de resultados de SQL. Describir el conjunto de resultados ayuda a un programa como Entitymanager a asignar columnas a las propiedades de las entidades. Los resultados escalares también se pueden definir y mezclar con los resultados de otras entidades, lo que da como resultado la devolución de una columna de alias. Una vez que se describen los conjuntos de resultados, es posible la ejecución de consultas nativas.