| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 08:18:56
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 08:40:57
|
pvrsouza
Virtual Machine Man
![[Avatar]](/images/avatar/dc58460601ab2b4e101cff43f30564f3.jpg)
Membro desde: 04/08/2009 09:50:14
Mensagens: 511
Localização: Salvador-BA
Offline
|
Parece muito interessante!!
Nao conhecia! Vou testar!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 08:46:03
|
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" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 08:53:46
|
AlexandreGama
JavaEvangelist
![[Avatar]](/images/avatar/b3ff1ba3daa4e2197738ef6940d90113.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 10:06:24
|
romarcio
JWizard
![[Avatar]](/images/avatar/0dc800465c816add16e0b6d63be91f49.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 10:47:15
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
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?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 11:57:00
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 12:39:28
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 13:31:39
|
nofan
JavaTeenager
![[Avatar]](/images/avatar/5a68e6cc0195b878aa5ff70df000cd5c.jpg)
Membro desde: 09/12/2007 17:03:07
Mensagens: 164
Offline
|
Muito interessante mesmo, vou testar em um proximo projeto!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 14:17:04
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
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 só 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?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 18:38:55
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
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 só 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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 06:38:54
|
Diabo Loiro
GUJ Master
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 08:08:26
|
renanreismartins
GUJ Ranger
![[Avatar]](/images/avatar/b43a306ca1e27299a57727ff5c0d4998.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 15:47:59
|
rafael_jesus
JavaTeenager
![[Avatar]](/images/avatar/7dbd57a72e7a4b847585fe80e8cb1a31.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 16:29:50
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
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 |
|
|
 |
|
|