Fala Paulo,
bom, concordo e discordo: 
Eu acho que essa eh uma otima resposta para poder disfacar o quanto o EJB-QL eh pobre! Nao faz o minimo sentido trocar o SQL uma linguagem poderosa e estavel a muito tempo por uma linguagem de fim de semana muito pouco testada! Soh vejo vantagem na velocidade de desenvolvimento, nada mais!
As querys gigantescas existem sim, e vao continuar existindo enquanto os Databases as executarem mmmuuuuiiitttoooo mais rapido do que apps pure java!
A mistura de regras de negocio acontecem ateh mesmo com EJB-QL, mas nao quero acreditar que a falta de recursos seja de proposito para que eu nao cometa erros de design, se for entao para que arquitetos? 
Levando em consideração a outra ponta, nosso database. Vc sabe que normalmente estão em outras máquinas e etc, agora sejamos sinceros, vc prefere trazer uma lista de produtos como o da Amazon.com e ordena-las usando sort do que usar o order by implementado por alienigenas da Oracle ou da IBM por exemplo? :shock:
Sabe, acho que acontece uma tremenda confusao mesmo, tipo ateh onde ir pelo J2ee e ateh onde tirar recursos do db por exemplo.
Eu tenho uma definição muito clara disso. Na minha opinião se vc esta escrevendo um produto (como eh o meu caso agora) vc deve optar pelo mais independente possivel e mais dentro dos padroes, acredito eu que pensando em j2ee a melhor opcao nao eh (WORA) Write Once Run Anywhere, e sim (DORAFIA) Develop Once Re-implement A Few Interfaces Anywhere, essa história de fazer uma app 100% dentro dos padroes eh uma tremenda bobeira! Vc perde o que poderia ser o diferencial da sua app! Eu acho que vc deve ter uma maneira de isolar da sua app o que eh fora de padrao mas eh util para que caso onde vc for fazer deploy nao suporte vc faca um deploy diferente!
O outro caso são softwares que nao sao produtos, ou seja, vc ja conhece bem o ambiente onde irão rodar, por exemplo a TAM, todo mundo sabe que a TAM eh Oracle, eu sei que estao migrando pra java e tal, mas a ideia eh melhorar a manutencao e nao se desligar da Oracle. Logo se vc precisa comparar localidades e suas proximidades por exemplo o que vc faz?
- cria uma esquema baseado em coordenadas xyz para que vc consiga representar qualquer ponto do globo juntamente com um sistema que calcula a curvatura da Terra para saber a distancia exata
2)apenas usa um tipo de dados do Oracle que ja faz isso sozinho com um simples select (com certeza tb escrito por alienigenas
)!
Logo sem duvida a discussao eh grande, mas o que vale eh o bom senso, quanto ao sort novamente o order by eh padrao no SQL ANSI, logo eu posso uza-lo sem medo de ser feliz!
[obs] Fala serio, escrevi pra caramba, pessoal nao pega mal nao eh que hoje eh segunda-feira :x ! [/obs]
Abraco,