terça-feira, 3 de março de 2009

db4o (parte 5) – Queries SODA

SODA é a API interna do db4o para a execução de Queries. Ela oferece compatibilidade com antigas versões, e pode ser utilizada para a criação de queries dinâmicas, enquanto a NQ é fortemente tipada.

A API SODA pode ser utilizada para queries dinâmicas, pois identifica os campos das classes como strings. Para a maioria das aplicações o ideal é utilizar uma API fortemente tipada, como é o caso da NQ e do LINQ, mas em certas aplicações a construção de queries dinâmicas pode ser necessária. A API SODA preenche essa lacuna.

Para escrever Queries com a API Soda precisamos da interface IQuery, e para isso é preciso importar o seguinte namespace: using Db4objects.Db4o.Query; Adaptando para o nosso exemplo, uma Query SODA para retornar todos os países ficaria assim:



Note que a constraint da query é uma “meta descrição” dos objetos que queremos retornar. O resultado é a lista de todos os países cadastrados, o mesmo resultado que obtivemos com o QBE e NE nos outros POSTs.

A única restrição das Queries SODA que eu particularmente não gosto, é que as constraints precisam ser criadas apontando para os atributos privados da classe (private fields), e não para as propriedades. Isso inviabiliza o uso das Queries SODA quando usamos as propriedades automáticas (recurso incluso no C#3.0), conforme fizemos no exemplo da classe Country.

Porém, se nossa classe tivesse sido declarada sem o recurso das propriedades automáticas, como neste exemplo abaixo:


Poderíamos então executar uma Query SODA com uma condição aplicada aos atributos, conforme você pode ver no exemplo abaixo:


Esses exemplos mostram apenas o básico que se pode fazer com as Queries SODA. É possível criar queries bem mais avançadas. Mas o importante a notar aqui é que esse é um mecanismo bem mais complexo de se criar Queries, se comparado com as NQs. Porém, toda NQ por debaixo dos panos, é convertida em SODA, o que significa que as Queries SODA são mais performáticas.

No fim vamos notar que cada estilo de Query atende à uma necessidade, e não será incomum usar mais do que um estilo na mesma aplicação. No próximo POST vou falar do LINQ e fechar a sequencia de posts sobre as Queries em db4o.

Grande Abraço e até o próximo!

2 comentários:

  1. Estava procurando algo sobre S.O.D.A. para Java e acabei vindo parar aqui.

    Ótima introdução a queries com S.O.D.A. amigo!

    ResponderExcluir
  2. O texto esta legal, mais não tem imagens, pelo menos pra mim não esta aparecendo.

    ResponderExcluir