Izvorni upiti su upiti izraženi kroz jezik strukturiranih upita (SQL) i sažeti su, kao i metode sigurne za tip C++ i Java izraza upita. Upotreba izvornih upita korisna je u korištenju specifičnih značajki u bazama podataka, uključujući savjete za upite i određene značajke specifične za bazu podataka. Također su korisni u pružanju čistih putova migracije izravno iz aplikacija koristeći SQL ili Java Database Connectivity (JDBC™). Izvorni upiti se koriste za pružanje rezultata koji se sastoje od skalarnih vrijednosti, entiteta ili oboje. Ove vrste upita podržavaju korištenje izvornog SQL-a na ciljnoj bazi podataka.
Ove vrste upita mogu prevladati nedostatke sučelja za programiranje aplikacija (API) temeljenog na nizovima. Upiti ove vrste koriste se u objektnoj bazi podataka, gdje je postojanost objekata uobičajen zadatak za programere i zajednička značajka baze podataka. Međutim, upiti koji nisu izvorni izgledaju strani u programima koji su objektno orijentirani jer su njihovi izrazi jednostavni nizovi i objektni grafovi koji sadrže isprepletene nizove.
Izvorni upiti pomažu u ublažavanju problema s kojima se susreću u bazama podataka izražavanjem upita unutar Jave i C++. Upiti se mogu pisati bez API-ja ili prilagođenog jezika upita. Osim toga, integrirano razvojno okruženje (IDE) može pomoći u smanjenju grešaka u kucanju. Izvorni upiti bi tada bili u potpunosti sigurni za tip i mogli bi im se pristupiti pomoću značajki refaktoriranja IDE-a. Konačno, upiti se mogu izvoditi, testirati i prototipizirati u odnosu na obične memorijske zbirke bez pozadinskog dijela baze podataka.
Upiti i njihov popratni SQL nisu nužno prenosivi na druge baze podataka. Nakon povratka mnogih entiteta određenim izvornim upitom, ti isti entiteti trebaju biti specificirani, kao i mapirani, u rezultate stupaca u SQL izrazima u softverskom programu za mapiranje definicija metapodataka. Kao rezultat, oni se mogu koristiti za mapiranje JDBC rezultata trajnim runtime-om u očekivane objekte. Upotreba parametra imena nikada nije definirana za ove vrste upita i prijenosne aplikacije mogu koristiti samo obvezivanje pozicijskih parametara za izvorne SQL upite. Podrška spojeva ograničena je na odnose pojedinačnih vrijednosti.
Za korištenje izvornih upita, programer mora opisati SQL skup rezultata. Opisivanje skupa rezultata pomaže programu kao što je Entitymanager mapirati stupce na svojstva entiteta. Skalarni rezultati se također mogu definirati i miješati s rezultatima drugih entiteta, što rezultira povratom stupca alias. Nakon što su skupovi rezultata opisani, moguće je izvršavanje izvornih upita.