Framework Esfinge QueryBuilder - Persistência simples e rápida  XML
Índice dos Fóruns » Notícias
Autor Mensagem
Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

Olá pessoal!

Gostaria de divulgar o framework com o qual tenho trabalhado: Esfinge QueryBuilder -> http://esfinge.sf.net

É um framework open-source que simplifica muito a criação da camada de persistência. Você precisa apenas criar uma inteface com métodos seguindo a convenção de nomenclatura do framework e pronto! Não precisa fazer mais nada!

A opinião e sugestões de vocês são muito bem vindas!

Saudações!

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
pvrsouza
Virtual Machine Man
[Avatar]

Membro desde: 04/08/2009 09:50:14
Mensagens: 511
Localização: Salvador-BA
Offline

Parece muito interessante!!


Nao conhecia! Vou testar!

rcnweb
Thread.start()

Membro desde: 11/12/2009 19:59:41
Mensagens: 47
Localização: Brasil
Offline

Show. Vou testar!

"Quem és tu, que a ilusão é tanta que é incapaz de definir seu próprio eu"
[MSN]
AlexandreGama
JavaEvangelist
[Avatar]

Membro desde: 16/04/2010 12:08:42
Mensagens: 338
Localização: São Paulo
Offline

Legal Guerra! A ideia é bem bacana e a documentação é bem simples.

Integração fácil com Spring tb!

Abraços!

Alexandre Gama

alexandre.gama.lima@gmail.com
alexandre.lima@usp.com.br
http://twitter.com/alexandregamma
http://alexandregama.wordpress.com
[Email] [WWW]
romarcio
JWizard
[Avatar]

Membro desde: 17/12/2008 10:05:49
Mensagens: 2434
Localização: Santa Maria/RS
Offline

Parece seguir o mesmo conceito usado pelo projeto do Spring Data-JPA.

Bacharel em Sistemas de Informação.
Oracle Certified Professional, Java SE 6 Programmer

Blog | Facebook | Twitter
[WWW]
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

Parece promissor. Só gostaria de tirar algumas dúvidas / fazer críticas:

1) Para a criação do DAO, é necessário implementar uma interface ou ela é criada em Runtime?

2) É possível customizar essa interface, para que os DAO's não sigam a convenção? Digo, não colocar as anotações DomainTerm, mas explicitamente dizer ao framework o que fazer, por exemplo, passando uma consulta JPA?

3) A parte de testes ainda parece deficiente. Notei que EntityManagers são passados usando a estrutura de serviços da JVM, mas em geral, os testes costumam estar juntos do código (por exemplo, em projetos Maven, o 'default' é deixar os testes juntos ao código). Seria mais interessante ele tirar proveito de técnicas como a usada pelo DBUnit, onde é possível criar uma regra para os testes em que, ao invés de criar o EntityManager padrão, usa o EntityManager de testes do Esfinge. Aliás, sendo um framework de persistência, ele poderia até mesmo criar esse ambiente de testes em runtime, baseado em XML's contendo datasets, por exemplo (idéia, essa, retirada do DBUnit).

4) Achei que a configuração para Spring poderia ser mais otimizada... pensou em criar uma extension do Spring, com o próprio namespace? Talvez isso torne algumas configurações mais interessantes, como por exemplo, a própria configuração das queries. Um problema que eu enxergo com as anotações é que elas são intrínsecas ao código, ou seja, se você quiser modificar, você tem que recompilar (algo que não acontece com XML's).

5) Com o perdão da palavra, mas achei o workflow ainda muito pobre. Você poderia modificar para ele ser mais parecido com o jBPM ou até melhor, para incluir features como persistência dos estados (não encontrei algum lugar dizendo que ele faz isso), interação humana (algo que só pode ser atingido com a persistência dos estados), criação de sub processos, interação com web services, JMS e outros.


Mais uma vez, parece promissor. Se continuar nesse ritmo, tem tudo para se tornar um grande nome entre os frameworks de persistência. O projeto é open source? Está aberto para colaboração?

[]'s

This message was edited 1 time. Last update was at 07/02/2012 10:48:11


Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

romarcio wrote:Parece seguir o mesmo conceito usado pelo projeto do Spring Data-JPA.


É isso mesmo, porém ele tem alguns diferenciais, como as consultas com suporte a null e os termos de domínio.

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

asaudate wrote:Parece promissor. Só gostaria de tirar algumas dúvidas / fazer críticas:

1) Para a criação do DAO, é necessário implementar uma interface ou ela é criada em Runtime?

2) É possível customizar essa interface, para que os DAO's não sigam a convenção? Digo, não colocar as anotações DomainTerm, mas explicitamente dizer ao framework o que fazer, por exemplo, passando uma consulta JPA?

3) A parte de testes ainda parece deficiente. Notei que EntityManagers são passados usando a estrutura de serviços da JVM, mas em geral, os testes costumam estar juntos do código (por exemplo, em projetos Maven, o 'default' é deixar os testes juntos ao código). Seria mais interessante ele tirar proveito de técnicas como a usada pelo DBUnit, onde é possível criar uma regra para os testes em que, ao invés de criar o EntityManager padrão, usa o EntityManager de testes do Esfinge. Aliás, sendo um framework de persistência, ele poderia até mesmo criar esse ambiente de testes em runtime, baseado em XML's contendo datasets, por exemplo (idéia, essa, retirada do DBUnit).

4) Achei que a configuração para Spring poderia ser mais otimizada... pensou em criar uma extension do Spring, com o próprio namespace? Talvez isso torne algumas configurações mais interessantes, como por exemplo, a própria configuração das queries. Um problema que eu enxergo com as anotações é que elas são intrínsecas ao código, ou seja, se você quiser modificar, você tem que recompilar (algo que não acontece com XML's).

5) Com o perdão da palavra, mas achei o workflow ainda muito pobre. Você poderia modificar para ele ser mais parecido com o jBPM ou até melhor, para incluir features como persistência dos estados (não encontrei algum lugar dizendo que ele faz isso), interação humana (algo que só pode ser atingido com a persistência dos estados), criação de sub processos, interação com web services, JMS e outros.


Mais uma vez, parece promissor. Se continuar nesse ritmo, tem tudo para se tornar um grande nome entre os frameworks de persistência. O projeto é open source? Está aberto para colaboração?

[]'s


Seguem as respostas :

1. Na verdade você precisa apenas criar a interface. A implementação é criada por um proxy dinâmico.

2. Não, pois para isso você não precisa do framework... Você pode criar sua própria classe. Nas próximas versões o framework deve suportar a adição de métodos customizados, porém não é esse seu foco.

3. Em relação aos testes eu discordo de você. O framework foi desenvolvido 100% usando TDD. Ele possui testes de unidade, que usam mocks e tal, e testes de integração, que inclusive usam o DBUnit. Pessoalmente acredito que os testes de unidade devem ficar junto com o código e os de integração em um projeto separado.

4. A integração com Spring não faz parte do framework em si. O tutorial no site apenas mostra como integrar. Se você puder enviar una forma melhor de integrar, terei prazer em colocar no site!

5. O framework de workflow é antigo e está descontinuado. Talvez no futuro ele seja retomado, porém não é o foco agora.

Ele é open source sim e qualquer colaboração é bem vinda!

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
nofan
JavaTeenager
[Avatar]

Membro desde: 09/12/2007 17:03:07
Mensagens: 164
Offline

Muito interessante mesmo, vou testar em um proximo projeto!
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

Guerr@ wrote:
3. Em relação aos testes eu discordo de você. O framework foi desenvolvido 100% usando TDD. Ele possui testes de unidade, que usam mocks e tal, e testes de integração, que inclusive usam o DBUnit. Pessoalmente acredito que os testes de unidade devem ficar junto com o código e os de integração em um projeto separado.


Eu não estava me referindo ao código do framework, mas sim, ao código que vai ser construído usando o framework. Os frameworks de persistência que já existem são chatos de serem testados, e seria um bom diferencial para o Esfinge prover esse tipo de facilidade.

EDIT: Ah, em relação à necessidade do framework para o uso de métodos customizados, acho importante manter a cabeça aberta. Pode ser que para algum caso específico , seja interessante customizar um método só e outro não. Assim, não seria necessário criar várias artimanhas para contornar o problema. (O Rod Johnson, quando começou o Spring, ia criar só um framework de injeção de dependências. Se ele não tivesse ido mais além, hoje, o Spring seria isso.)

[]'s

This message was edited 1 time. Last update was at 07/02/2012 15:41:00


Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

asaudate wrote:
Eu não estava me referindo ao código do framework, mas sim, ao código que vai ser construído usando o framework. Os frameworks de persistência que já existem são chatos de serem testados, e seria um bom diferencial para o Esfinge prover esse tipo de facilidade.


Um teste de classes que usam a persistência seria fácil pois é só mockar a interface criada.

Um teste para ver se a interface está criando as consultas corretas usaria o DBUnit e uma base de dados de testes configurada como uma unidade de persistênia alternativa. Daí você poderia criar um EntityManagerProvider de teste colocando a anotação @ServicePriority(1) que nesse caso ele terá prioridade em relação ao da aplicaçao enquanto estiver no classpath. A questão é que isso não está em lugar nenhum... Vou ver se consigo criar um tutorial mostrando como testar!

asaudate wrote:
EDIT: Ah, em relação à necessidade do framework para o uso de métodos customizados, acho importante manter a cabeça aberta. Pode ser que para algum caso específico , seja interessante customizar um método só e outro não. Assim, não seria necessário criar várias artimanhas para contornar o problema. (O Rod Johnson, quando começou o Spring, ia criar só um framework de injeção de dependências. Se ele não tivesse ido mais além, hoje, o Spring seria isso.)


Vou fazer isso nas próximas versões (com a estrutua atual não seria complicado), porém não vejo tanta diferença entre colocar esse método adicional na interface do QueryBuilder ou não... A idéia do framework é atender cerca de 90% das consultas de um sistema. Só com isso vai sobrar tempo para as mais complicadas...

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
Diabo Loiro
GUJ Master
[Avatar]
Membro desde: 24/03/2009 07:46:14
Mensagens: 1040
Localização: Praia Grande - SP
Offline

show de bola.

Sun Certified Java Associate
Sun Certified Java Programer 6.0
Sun Certified Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer

Blog
http://brunodanielmarinho.wordpress.com

Fals - Osum Leader
http://osum.sun.com/group/fals


renanreismartins
GUJ Ranger
[Avatar]

Membro desde: 19/09/2007 15:19:38
Mensagens: 807
Localização: São Paulo - SP
Offline

guerra olhei ontem, voltei hj pra ler mais e o site ta off...



UPDATE: VOLTOU rs

This message was edited 1 time. Last update was at 08/02/2012 08:14:41


http://renanreismartins.blogspot.com/ - Para apaixonados por desenvolvimento de software
[WWW] [MSN]
rafael_jesus
JavaTeenager
[Avatar]

Membro desde: 09/06/2011 15:09:40
Mensagens: 169
Offline

Opah, no aguardo de um artigo na MundoJ..

Abrcs e parabéns!!

Acredite um pouco mais na força de sua própria intuição. Muitas vezes deixamos de realizar algo de bom ou que nos favoreça simplesmente porque
achamos tudo muito difícil e por isso nem começamos
Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

rafael_jesus wrote:Opah, no aguardo de um artigo na MundoJ..


Sairá na próxima!

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
 
Índice dos Fóruns » Notícias
Ir para:   
Powered by JForum 2.1.8 © JForum Team