Native Query, ou NQ para os íntimos, é a principal interface para realização de queries no db40. As NQs do db4o tem o mesmo apelo que a linguagem LINQ do .NET Framework possuí: criar queries usando a própria linguagem gerenciada.
Eu sou fã incondicional da linguagem LINQ, e como veremos em POSTs futuros o próprio db4o tem suporte para o LINQ, o que torna as NQs a minha segunda opção para queries neste database.
Porém é importante vermos como as NQs funcionam, e é isso que veremos aqui. Se você quiser entender mais a fundo os conceitos e princípios por trás das NQs, sugiro a leitura dos seguintes artigos:
Seguindo a nossa linha de exemplos que acessa o database algoritma.yap e consulta os objetos da classe Country, veja como fica na listagem abaixo uma query que retorna todos os países com população maior que 100 milhões, usando NQ:
Note que em C# uma NQ é feita com o uso de um delegate, e retorna um lista genérica. Assim como o LINQ, uma NQ tem o benefício da tipagem forte, o que facilita a criação da query para o desenvolvedor. Veja na Figura abaixo o resultado da execução do código acima:
É inegável que esta é uma forma muito eficiente de se construir queries, principalmente as complexas. Veja, por exemplo, que na listagem a seguir temos uma condição que seria impossível de se realizar usando QBE (Query By Examplo visto no post anterior).
Essa query deve retornar todos os países que tenham população entre 100 e 200 milhões, e que também contenham a letra “a” no nome. Pode parecer uma pesquisa inútil, mas ilustra bem o grau de complexidade que podemos atingir com as NQs. O resultado da execução desta Query você vê na figura a seguir:
O efeito colateral das NQs pode ser a baixa performance. Por debaixo dos panos, o db4o vai analisar as NQs e convertê-las em queries SODA (que veremos em detalhes no próximo POST). Isso é claro, deve variar conforme a complexidade das queries.
Além das NQs e QBEs, ainda temos outras duas formas possíveis de se realizar queries no db4o. A API Soda e a linguagem LINQ, que veremos nos próximos dois posts.
Grande Abraço e até o próximo!
Nenhum comentário:
Postar um comentário