Comparando Querydsl, jOOQ, JEQUEL, activejdbc, iciql e outras DSLs de consulta

lguém pode me indicar alguns recursos sobre a comparação de desempenho entre as diferentes bibliotecas Query DSL disponíveis para uso com Java, como: Querydsl, jOOQ, JEQUEL, activejdbc, iciql e etc ...

Fundo Estou usando o modelo Spring JDBC, mas isso ainda exigia que as consultas fossem gravadas no formato de sequência simples. Embora eu não tenha problemas ao escrever as consultas diretas, estou preocupado em ter dependência direta dos nomes das tabelas do banco de dados. Não quero usar nenhuma estrutura ORM como Hibernate ou JPA / EclipseLink. Preciso do desempenho bruto o mais alto possível (IMO, eles são bons para aplicativos mais centrados em CRUD). Eu posso pagar uma pequena sobrecarga para essas DSLs apenas se isso for um pouco (acredito, serão principalmente concatenações StringBuilder / String!)

Eu considerei usar consultas nomeadas externalizadas em alguns xml. Mas apenas tentando avaliar o valor que diferentes bibliotecas DSL de consulta fornece

Edit: mais sobre a minha exigência: Quero conhecer a comparação de desempenho entre eles ao criar uma consulta moderadamente complexa usando seus métodos de API. Tudo o que preciso é gerar uma string de consulta usando qualquer uma dessas bibliotecas DSL de consulta e transmiti-la ao modelo Spring JDBC. Portanto, quero saber se a adição dessa etapa intermediária incorre em uma penalidade de desempenho considerável. Quero usar consultas nomeadas ou criar minha própria biblioteca que apenas usa o StingBuilder ou uma abordagem semelhante

atualiza minha experiência com jOOQ, iciql, QueryDSL:

Embora eu tenha esquecido de mencionar isso na minha postagem original, também estou interessado na facilidade de uso e na sobrecarga que preciso ter nas minhas classes de entidade (como se fossem necessárias anotações ou implementações adicionais

jOOQ:

requer alterar as propriedades da entidade para a maneira específica da bibliotecapode retornar a string de consulta SQL

Iciql:

entity pode ser mapeado sem ou com pequenas alterações (pode ser mapeado usando o total de três maneiras) mas com isso limita-se a selecionar apenas consultas (para atualização / exclusão / ... requer alterações de entidade novamente)

QueryDSL:

últiplas maneiras de vincular entidades à tabela (exceto maneiras específicas da biblioteca, é possível usar anotações JPA). mas precisamos modificar as entidades pelo menosenhuma maneira simples / direta de obter a string de consulta

(todas as observações são com pouco conhecimento que tenho sobre elas; se alguma delas estiver incorreta, corrija)

Com todas as opções acima, eu continuo escrevendo perguntas nomeadas :( Mas como a resposta de Lukas Eder parece explicar sobre minha preocupação original com o post (desempenho), eu aceitei a dele.

questionAnswers(4)

yourAnswerToTheQuestion