
Vantagens e desvantagens de conexão manual e automática ao banco de dados no CodeIgniter
28/02/2017O CodeIgniter dá a possibilidade de fazer conexão com um banco de dados ou mais na mesma aplicação, permitindo também que a conexão seja feita de modo automático ou manual.
Nesse artigo você verá os prós e contras de trabalhar com conexão manual e com conexão automática ao banco de dados no Codeigniter.
Conexão manual
O uso de conexão manual é pouco utilizado, pois torna necessária a definição manual da conexão sempre que for executar alguma query, o que pode gerar erros na aplicação, como por exemplo:
- falha na conexão por conta de esquecer de executar o
load
- falha na conexão por não definir as configurações, seja via DSN ou grupo
Ao utilizar uma conexão manual você deve fazer o carregamento do objeto da classe de banco de dados do CodeIgniter toda vez que precisar utilizá-la.
$this->load->database();
Para se conectar manualmente você deverá informar o nome do grupo que foi configurado no arquivo application/config/database.php
como parâmetro para o método mostrado acima, ou então passar as configurações de conexão em formato DSN.
// Via grupo
$this->load->database('nome_grupo');
// Via DSN
$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
$this->load->database($dsn);
Uma das vantagens da conexão manual é que você pode gerenciar melhor o momento de se conectar ao banco de dados e também construir múltiplas conexões.
Para construir múltiplas conexões você irá executar o load
uma vez para cada conexão, definindo o segundo parâmetro para o método como TRUE
, que fará com que o objeto do banco de dados seja retornado.
$DB1 = $this->load->database('grupo_um', TRUE);
$DB2 = $this->load->database('grupo_dois', TRUE);
Para utilizar cada uma das instâncias, basta você substituir $this->db
pela variável que corresponde ao objeto do banco de dados que você deseja executar as instruções.
// Trocar este...
$this->db->query();
$this->db->result();
// ...por este
$DB1->query();
$DB1->result();
Prós e contras da conexão manual
Prós
- melhor controle do momento de abrir a conexão
- possibilidade de gerenciar múltiplas conexões a partir de variáveis
Contras
- possibilidade de falha na conexão por conta de esquecer de executar o
load
- possiblidade falha na conexão por não definir as configurações, seja via DSN ou grupo
- aumento do número de variáveis da aplicação
Conexão automática
A conexão automática ao banco de dados é a mais utilizada, pois além de ser mais fácil, gera menos chance de problemas como os que podem ocorrer em conexões manuais.
É a forma mais fácil de fazer uma conexão com banco de dados no CodeIgniter, bastando apenas adicionar a biblioteca Database
ao arquivo application/config/autoload.php
para que ela seja carregada automaticamente e definir as configurações de conexão no arquivo application/config/database.php
.
Feito isso, sempre que precisar executar instruções no banco de dados, basta utilizar $this->db
que todos os recursos estarão disponíveis.
Prós e contras da conexão automática
Prós
- a aplicação estará sempre pronta para executar instruções no banco de dados
- você pode facilmente alterar as configurações de conexão
Contras
- não vai poder trabalhar com variáveis para gerenciar a conexão, vai sempre ter que usar
$this->db
(exceto se você passar esse objeto para uma variável) - possibilidade de falha na conexão caso esqueça de adicionar a biblioteca
Database
no arquivoautoload.php
DICA – Alterando o banco de dados em uma conexão
Se você precisar apenas usar um banco de dados diferentes na mesma conexão, basta você trocar o banco de dados usando o seguinte comando:
$this->db->db_select($outro_db);
Agora que você já conhece um pouco mais sobre a conexão manual e automática ao banco de dados com CodeIgniter, já pode escolher a melhor forma para utilizar em sua aplicação.
Para mais informações sobre banco de dados no CodeIgniter, visite a documentação oficial.
Bons estudos!