Wat zijn native vragen?
Native query's zijn query's die worden uitgedrukt via Structured Query Language (SQL) en zijn beknopt evenals typeveilige methoden voor C ++ en Java-query-expressie. Het gebruik van native query's is nuttig bij het gebruik van specifieke functies in databases, waaronder queryhints en bepaalde database-specifieke functies. Ze zijn ook nuttig bij het bieden van schone migratiepaden rechtstreeks vanuit toepassingen met SQL of Java Database Connectivity (JDBC ™). Native query's worden gebruikt om resultaten te geven die bestaan uit scalaire waarden, entiteiten of beide. Dit type query's ondersteunt het gebruik van native SQL in een doeldatabase.
Dit soort vragen kan de tekortkomingen van een string-gebaseerde applicatie-programmeerinterface (API's) verhelpen. Dergelijke query's worden gebruikt in een objectdatabase, waar objectpersistentie een veel voorkomende taak is voor programmeurs en een gemeenschappelijk kenmerk van de database. Niet-native query's verschijnen echter vreemd in programma's die objectgeoriënteerd zijn, omdat hun uitdrukkingen eenvoudige tekenreeksen en objectgrafieken zijn met tussenliggende tekenreeksen.
Native query's helpen de problemen in databases te verlichten door een query uit te drukken in Java en C ++. Query's kunnen worden geschreven zonder een API of een aangepaste querytaal. Bovendien kan een Integrated Development Environment (IDE) helpen bij het verminderen van typefouten. De native query's zouden dan maximaal typeveilig zijn en toegankelijk voor de refactoringfuncties van een IDE. Ten slotte kunnen de query's worden uitgevoerd, getest en geprototypeerd voor gewone geheugenverzamelingen zonder de achterkant van een database.
De query's en de bijbehorende SQL zijn niet noodzakelijkerwijs overdraagbaar naar andere databases. Bij de terugkeer van veel entiteiten door een bepaalde native query, moeten deze dezelfde entiteiten worden opgegeven en toegewezen aan kolomresultaten in SQL-instructies in een softwareprogramma voor het in kaart brengen van metagegevensdefinitie. Als gevolg hiervan kunnen deze worden gebruikt om JDBC-resultaten door aanhoudende runtime toe te wijzen aan verwachte objecten. Het gebruik van naamparameters is nooit gedefinieerd voor dit soort query's en draagbare toepassingen kunnen alleen binding van positionele parameters gebruiken voor native SQL-query's. Ondersteuning van joins is beperkt tot relaties met afzonderlijke waarden.
Om native query's te gebruiken, moet een programmeur een SQL-resultatenset beschrijven. Door de resultatenset te beschrijven, kan een programma zoals Entitymanager kolommen toewijzen aan eigenschappen van entiteiten. Scalaire resultaten kunnen ook worden gedefinieerd en gemengd met resultaten van andere entiteiten, wat resulteert in een rendement van een aliaskolom. Nadat de resultatensets zijn beschreven, is uitvoering van native query's mogelijk.