Olá pessoal
Sou programador Java e .NET, trabalho com banco de dados Oracle e SQL Server e, recorro a sabedoria de vocês para me ajudar a sanar uma duvida que vem gerando controvérsias ao ser debatida. Nas aplicações em que desenvolvo, tenho o habito de abrir conexões com o banco de dados, executar minha rotina (select, insert, update e etc) e, fecha-la em seguida, pois não vejo motivo que justifique manter a conexão com o banco de dados aberta a todo momento. Pois bem, ao debater o assunto com alguns amigos programadores, recebo algumas criticas e vários deles fazem o caminho contrario, justificando que uma conexão constante trás mais agilidade ao programa.
Sendo assim, gostaria de saber qual a opinião dos amigos do GUJ sobre o assunto.
Na minha opinião você faz de forma correta.
Imagine uma aplicação com 200 usuários online simultâneamente, porque você manteria um pool de 200 conexões com o banco, sendo que com um 10 você já conseguiria atender a todos sem problemas, utilizando uma arquitetura desconectada.
Opa bom dia , em meus projetos eu sempre utilizo um pool de conexões.
Qual o problema de abrir e fechar conexões?
pode ser “custoso” para o servidor, pois se houver 1000 Usuários logados serão em torno de 1000 conexões abertas.
Em java eu aconselho o HikariCP que pode ser integrado facilmente no hibernate ou jdbc puro
este Artigo fala como vc pode calcular o número de conexões
O que eu entendi é que seus amigos programadores abrem uma conexão ao DB e utilizam a mesma conexão para todas as operações de DB de todos os usuários.
Se eu entendi certo, seus amigos programadores estão fazendo uma grande besteira.
O objeto DbConnection ou SqlConnection não é “thread-safe”, ou seja, não foi programado para ser compartilhado entre várias threads. Isso significa que se você tiver mais de um usuário simultâneo, a CDM (Chance de Dar Merda) é muito alta.
O que os colegas do fórum sugeriram é o melhor caminho. Use um pool de conexões. A performance é melhor e ele garante que uma conexão de banco não é indevidamente compartilhada entre threads.