Relembrando conexão em outras classes

5 respostas
B

Boa tarde pessoal, estou desenvolvendo meu primeiro programinha em java ( uma agenda eletronica), agora preciso colocar os dados dentro do banco, ja consegui fazer uma classe que se conecta com o banco, mas a minha idéia é criar uma classe para cada ação que pretendo fazer no banco (Inserir, exluir, modificar, pesquisar), só que pra isso eu preciso em cada classe dessas que eu vou fazer verificar se a conexão está aberta, alguém poderia me ajudar ?? Peço pra que me expliquem passo a passo, pois citei a cima sou leigo e esse é meu primeiro programinha, então peço para irem devagar, segue abaixo meu código, Criticas e Sugestões serão bem vindas.

package br.edu.java.agendaeletronica;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conecta {
	private static Connection conexao;

	public static Connection getConexao() {
		if (conexao == null) {
			try {
				Class.forName("org.postgresql.Driver");
				conexao = DriverManager.getConnection(
						"jdbc:postgresql://localhost:5432/agenda", "postgres",
						"suiciniv");
			} catch (ClassNotFoundException ex) {
				ex.printStackTrace();
			} catch (SQLException ex) {
				ex.printStackTrace();
			}
		}

		return conexao;
	}
}

A minha duvida é como lembrar essa conexão nas outras classes, ou se tiver um modo de abri-la no inicio do programa e somente feixa-la no término do programa melhor ainda.

Att ViniciuS

5 Respostas

drsmachado

Você quer aumentar a coesão do seu projeto, criando várias classes para ações distintas com o banco, mas não quer criar uma cuja função seja gerenciar as conexões?
Sugiro que você pesquise sobre singleton e então reveja se o que está fazendo está certo.
Outro detalhe, entendo que coesão é importante, mas, todas as operações que serão realizadas com o banco de dados podem ser atribuídas a uma única classe, pois todas são responsabilidade desta. Não acha?

Yelden

Eu acho que depende do projeto drsmachado, analisando um possível diagrama de classes, poderia ser algo como:
-A Classe “Contatos”, essa classe possui operações (métodos) como adicionar um contato, pesquisar um contato, etc…
-Mas também Poderiam haver diversos tipos de contatos, como “do trabalho, família, amigos”… onde cada um seria uma classe diferente, então existiria diversas classes que manipulariam o banco de uma forma diferente.

É claro que no caso do exemplo, a classe Contatos poderia ser feita de forma mais geral usando boas práticas de OO. mas supondo que não seja o caso, e indo à dúvida backman, Você pode criar um objeto Connection, e referenciar esse objeto à todos outros que precisem acessar o banco, por exemplo:

void OpenConnection() {
Connection cn //faz a conexão com o banco

}


void Contato( Connection cn ){ } //faz operações no banco

No exemplo, a classe Contato recebe a conexão cn que foi aberto anteriormente.

drsmachado

Yelden:
Eu acho que depende do projeto drsmachado, analisando um possível diagrama de classes, poderia ser algo como:
-A Classe “Contatos”, essa classe possui operações (métodos) como adicionar um contato, pesquisar um contato, etc…
-Mas também Poderiam haver diversos tipos de contatos, como “do trabalho, família, amigos”… onde cada um seria uma classe diferente, então existiria diversas classes que manipulariam o banco de uma forma diferente.

Provavelmente você tenha me interpretado errado.
Veja que o autor do tópico coloca que vai criar uma classe para cada tipo de query que for executar. Uma para insert, outra para select, outra para delete e outra para update.
Ao invés de criar uma classe ContatoFamilia, ele criará ContatoFamiliaInsert, ContatoFamiliaSelectOne, ContatoFamiliaSelectAll, ContatoFamiliaSelectAllByParams, ContatoFamiliaUpdate, ContatoFamiliaDelete…
Do meu ponto de vista, tudo o que está ligado à ContatoFamilia deve estar dentro da classe que controla ContatoFamilia no banco de dados, seja em um modelo DAO ou Repository ou Active Record.

S

backman recomendado você dar uma estudada sobre DAO (Data Acces Object) antes de começar esse projeto…

JavaDreams

backman:
Boa tarde pessoal, estou desenvolvendo meu primeiro programinha em java ( uma agenda eletronica), agora preciso colocar os dados dentro do banco, ja consegui fazer uma classe que se conecta com o banco, mas a minha idéia é criar uma classe para cada ação que pretendo fazer no banco (Inserir, exluir, modificar, pesquisar), só que pra isso eu preciso em cada classe dessas que eu vou fazer verificar se a conexão está aberta, alguém poderia me ajudar ?? Peço pra que me expliquem passo a passo, pois citei a cima sou leigo e esse é meu primeiro programinha, então peço para irem devagar, segue abaixo meu código, Criticas e Sugestões serão bem vindas.

package br.edu.java.agendaeletronica;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conecta {
	private static Connection conexao;

	public static Connection getConexao() {
		if (conexao == null) {
			try {
				Class.forName("org.postgresql.Driver");
				conexao = DriverManager.getConnection(
						"jdbc:postgresql://localhost:5432/agenda", "postgres",
						"suiciniv");
			} catch (ClassNotFoundException ex) {
				ex.printStackTrace();
			} catch (SQLException ex) {
				ex.printStackTrace();
			}
		}

		return conexao;
	}
}

A minha duvida é como lembrar essa conexão nas outras classes, ou se tiver um modo de abri-la no inicio do programa e somente feixa-la no término do programa melhor ainda.

Att ViniciuS

Backman,
antes de mais nada lhe dou as boas vindas ao fórum GUJ.

Sinta-se à vontade para perguntar.

Sobre o que está querendo fazer, eu te indico umas vídeo aulas abaixo:

Para esse tema eu lembro que utilizei umas vídeo aulas do youtube

vou postar elas aqui:

Canal do usuário: http://www.youtube.com/user/softipp/videos

Conexão NetBeans + Java + MySql (demonstração total desde a criação do banco até preencher o jtable java)

1 - Vídeo 1 2 - Vídeo 2 3 - Vídeo 3 4.1 - Vídeo 4.1 4.2 - Vídeo 4.2 5.1 - Vídeo 5.1 5.2 - Vídeo 5.2 6 - Vídeo 6 7 - Vídeo 7 8 - Vídeo 8 9 - Vídeo 9

Olha como estou vendo que você é novo não vou te indicar a pesquisar coisas das quais
não sei se você vai ter base o suficiente para entender.

Como meu intuito é sanar sua dúvida primeiramente, lhe dou essa dica…
Assista as vídeo aulas para você saber como a coisa acontece.

Depois que resolver seu problema, aí sim você pode começar a pesquisar
sobre a melhor forma de fazer as coisas e até mesmo perguntar isso num Post
para saber a opinião da galera.

Por isso me atendo ao assunto do post não te indiquei nenhum padrão, livro ou coisa
do tipo, mas apenas vídeo aulas que irão te ajudar a ver acontecendo e saber como
fazer funcionar aí na tua máquina.

abraços e mais uma vez
Seja Bem Vindo ao GUJ.

Criado 1 de agosto de 2013
Ultima resposta 20 de ago. de 2013
Respostas 5
Participantes 5