Pergunta

Qual é a melhor maneira de implementar o pool de conexão em hsqldb, sem comprometer a velocidade?

Foi útil?

Solução

Hibernate obtém as conexões a partir de uma fonte de dados, usa-os e fecha-los. Você precisa de um pool de conexão ou ele vai ser muito ineficiente, consumindo uma grande quantidade de recursos, tanto na sua aplicação e sobre os DBMS, independentemente do servidor de banco de dados que você usa.

Você deve experimentar commons-DBCP de Apache-Jacarta, que é muito eficiente e realmente simples de configurar. Depende de commons-piscina. Você acabou de definir uma BasicDataSource com DBCP e vai gerenciar as conexões a partir de qualquer driver JDBC você diga a ele para usar. Tem validação de conexão e um monte de outras coisas. De, se você estiver escrevendo um aplicativo web, configure um pool de conexão no recipiente que você vai usar e usar isso, em vez de definir a sua própria piscina.

Outras dicas

Você está comparando maçãs e laranjas:

  1. Se você quer ORM comparar o desempenho de diferentes ferramentas ORM contra o mesmo banco de dados.
  2. Se você quer o pool de conexão comparar diferentes bibliotecas conexão pooling contra o mesmo banco de dados.

Performing ORM incorre esforço extra para que ele nunca vai ser tão rápido como acesso directo JDBC. Dito isto, hibernação vai para grandes comprimentos (e muito com sucesso) para minimizar essa sobrecarga adicional. Com ORM você está negociando off aumentou significativamente a produtividade de desenvolvimento contra uma relativamente pequena queda no desempenho.

O pool de conexões é um problema ortogonal ao ORM. Mais obviamente, Hibernate permite que você selecione a sua própria infra-estrutura de conexão pooling.

Além disso, estar ciente de que, na prática, muitas vezes há um acoplamento bastante apertado entre o pool de conexão e MGMT transação. Por exemplo, uma aplicação J2EE típico vai deixar o pool de conexão ao recipiente (por meio da API JDBC fonte de dados) e dependem de transações declarativas. Neste caso, as conexões e as transações são gerenciadas (aproximadamente) juntos.

Se você não está em um recipiente J2EE e você não precisa orm eu simplesmente comparar C3P0, commons-pool, etc.

Se você usou própria pooler conexão do Hibernate, você pode considerar o uso c3p0 ? (Se você já está usando c3p0, eu não posso ajudar ainda mais) Eu não usei HSQLDB mim, mas eu acho que poderia ser vale a pena tentar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top