| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 06:33:51
|
bland
JavaEvangelist
Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline
|
Olá pessoal!
Estou engajado em um projeto e preciso ter essa ideia muito bem definida e queria a ajuda de vocês.
Tenho, antes de tudo, que elaborar um seminário juntamente com os desenvolvedores e explicar quais são as melhores práticas de desenvolvimento e mostrá-los como devem proceder, bem como o ganho que terão com isso.
Por outro lado, irei estar incorporando ao projeto um Pool de Conexões para facilitar a programação e evitar a utilização desnecessária de conexões.
Aí vem a dúvida, como eu poderia estar criando um Pool de conexões de maneira "elegante" e que funcione. Ou seja, como posso elaborar ou utilizar de algum framework, abstração, container, ou seja lá o que for, a ideia de um pool de conexões e que este seja de fácil utilização e de configuração?
O maior medo é que os desenvolvedores fiquem com a responsabilidade de criar e fechar as conexões por conta própria, deixando arriscado a possibilidade de se deixar as conexões abertas e isso vir a ser um grande problema posteriormente.
De antemão, pensei em criar um filtro e fazer com que este faça uma conexão sempre que for necessário, claro, e executar o commit e / ou fechar a conexão sempre que estão não for mais necessária.
Enfim, essas são algumas dúvidas que espero que me ajudem para melhor definir o processo de desenvolvimento na elaboração deste projeto.
P.S.: Não sabia onde criar este post. Então criei aqui mesmo. Se estiver errado, por favor moderadores, mova-o para o local apropriado.
Abraços.
|
http://www.twitter.com/almeidafabiano
Fabiano Almeida. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 06:52:54
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Olá,
Se você estiver usando algum mecanismo de persistência do banco de dados, como o Hibernate, você pode facilmente integrá-lo ao C3P0 que é um mecanismo de pool de conexões. Ficaria fácil como adicionar alguns parâmetros a seu hibernate.cfg.xml
Caso você não utilize um mecanismo assim, sugiro que você dê uma lida mais aprofundada no C3P0, mas continuo recomendando-o como pool de conexões.
Aqui encontrei algumas infos interessantes a respeito http://www.mchange.com/projects/c3p0/index.html
Dê uma lida, acredito que isso vá ajudar.
Abs,
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 06:55:48
|
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
|
Fábio, vou postar aqui alguma experiencia que tive com pool de conexoes e abertura e fechamento de conexao e transacao, espero que te ajude.
em um projeto, estava desenvolvendo utilizando o tomcat como container e utilizei o hibernate como orm, então aproveitei para criar o pool de conexoes com o c3p0 e implementei um filtro que abria e fechava a conexao a cada request, caso acontecesse uma exceçao ele fazia um rollback. Muita gente nao gosta desta abordagem por pegar uma conexao do pool e abrir uma transacao desnecessaria caso o request seja apenas um request de navegaçao, onde nao necessite nenhum recurso do db. Porem no meu caso isso nao criaria um gargalo no sistema, entao optei pela simplicidade.
em um outro projeto utilizando o glassfish, criamos o pool e o datasource no proprio servidor de aplicação, neste caso utilizamos o toplink como orm e EJBs, nao tenho muita experiencia em EJBs mas fui orientado que utilizando tal tecnologia nao seria necessario a abertura e fechamento de transacoes, entao neste caso ficamos livres de tal controle.
abrasssss
|
http://renanreismartins.blogspot.com/ - Para apaixonados por desenvolvimento de software |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 09:28:22
|
rollei
JavaEvangelist
![[Avatar]](/images/avatar/bc651ee72c10b4d3a814df7c0d377ed7.jpg)
Membro desde: 21/02/2008 11:27:15
Mensagens: 397
Offline
|
renanreismartins wrote:Fábio, vou postar aqui alguma experiencia que tive com pool de conexoes e abertura e fechamento de conexao e transacao, espero que te ajude.
em um projeto, estava desenvolvendo utilizando o tomcat como container e utilizei o hibernate como orm, então aproveitei para criar o pool de conexoes com o c3p0 e implementei um filtro que abria e fechava a conexao a cada request, caso acontecesse uma exceçao ele fazia um rollback. Muita gente nao gosta desta abordagem por pegar uma conexao do pool e abrir uma transacao desnecessaria caso o request seja apenas um request de navegaçao, onde nao necessite nenhum recurso do db. Porem no meu caso isso nao criaria um gargalo no sistema, entao optei pela simplicidade.
em um outro projeto utilizando o glassfish, criamos o pool e o datasource no proprio servidor de aplicação, neste caso utilizamos o toplink como orm e EJBs, nao tenho muita experiencia em EJBs mas fui orientado que utilizando tal tecnologia nao seria necessario a abertura e fechamento de transacoes, entao neste caso ficamos livres de tal controle.
abrasssss
eu nao entendi o porque de voce fazer um filtro para ficar fechando as conexoes. o pool jah se encarrega disso para voce. Na configuracao do pool voce define quantas conexoes voce quer manter ativas (maximo, minimo, etc), nao eh muito bom voce deixar o pool sempre vazio (tem como fazer isso tambem somente configurando o pool), mas ae voce vai ter um overhead, para abrir uma conexao nova a cada nova consulta, mantendo algumas conexoes abertas quando uma nova consulta eh executada o pool se encarrege de utilizar aquela conexao para executar sua query e depois libera a conexao sem precisar fecha-la
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 09:33:01
|
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
|
opa rollei, acho que me expressei mal, nao é exatamente para fechar, mas para devolver ao pool. como vc mesmo citou sempre deixo um numero min de conexoes ativas no pool. "retiro para uso, mas depois libero"
abrasss
|
http://renanreismartins.blogspot.com/ - Para apaixonados por desenvolvimento de software |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 09:37:52
|
rollei
JavaEvangelist
![[Avatar]](/images/avatar/bc651ee72c10b4d3a814df7c0d377ed7.jpg)
Membro desde: 21/02/2008 11:27:15
Mensagens: 397
Offline
|
Se voce estiver utilizando o padrao JPA(com hibernate) voce vai precisar apenas adicionar essa propiedade no persistence.xml (caso voce esteja usando hibernate sem JPA o arquivo eh o hibernate.cfg.xml)
e depois adicionar um arquivo c3p0.properties na raiz do seu source (estando na raiz o c3p0 jah encontra o arquivo automaticamente)
*** EDIT ***
Soh lembrando que voce tem alterar esses valores de configuracao para melhor se adequar a sua aplicacao
This message was edited 2 times. Last update was at 19/06/2009 09:41:30
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 09:48:34
|
rollei
JavaEvangelist
![[Avatar]](/images/avatar/bc651ee72c10b4d3a814df7c0d377ed7.jpg)
Membro desde: 21/02/2008 11:27:15
Mensagens: 397
Offline
|
Eu recomendo voce usar Hibernate seguindo o JPA, eu particularmente acho um saco ficar alterando os xml dos pojos, pelo menos para mim parece bem mais natural manter as informacoes de mapeamento junto com a classe e nao em um arquivo externo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2009 09:54:14
|
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
|
n eh necessario utilizar jpa para colocar o mapeamento junto da classe
abrasss
|
http://renanreismartins.blogspot.com/ - Para apaixonados por desenvolvimento de software |
|
|
 |
|
|
|
|