Banco de dados

Vantagens e desvantagens de conexão manual e automática ao banco de dados

O 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.

Nas linhas a seguir você verá os prós e contras de trabalhar com conexão manual e com conexão automática.

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:[email protected]/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 library 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 library database no arquivo autoload.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!