Exemplo de interfaces - DAO
Página 1 de 1
Exemplo de interfaces - DAO
Este é um exemplo um pouco mais complexo, mas é bastante realista
AplicacaoPrincipal
Cliente
DAOFactory
ClienteDAO
JDBCClienteDAO
HbnClienteDAO
AplicacaoPrincipal
- Código:
public class AplicacaoPrincipal {
public static void main(String[] args) {
Cliente cliente = new Cliente();
cliente.setCdCliente(1);
cliente.setNmCliente("Charles");
cliente.setObservacoes("Sem observações");
//Cria um objeto cliente. Em uma aplicação real
//este objeto teria sido criado baseado nos valores que
//o usuário teria digitado
DAOFactory factory = new DAOFactory();
//Uma DAOFactory é um objeto que tem a capacidade
//de fabricar objetos do tipo DAO.
//Veja a classe para mais detalhes
ClienteDAO clienteDAO = factory.getClienteDAO();
//A factory fornece um objeto que implementa a interface ClienteDAO
//Não há garantias de que será uma HbnClienteDAO ou uma JDBCClienteDAO
//Porém, tanto faz, pois as duas implementam a interface ClienteDAO,
//ou seja, qualquer que seja a classe, vai implementar o metodo
//saveCliente
clienteDAO.saveCliente(cliente);
//pega o objeto referenciado por clienteDAO (seja lá qual for sua classe)
//e manda ele salvar o cliente no banco de dados
}
}
Cliente
- Código:
public class Cliente {
private int cdCliente;
private String nmCliente;
private String observacoes;
public int getCdCliente() {
return cdCliente;
}
public void setCdCliente(int cdCliente) {
this.cdCliente = cdCliente;
}
public String getNmCliente() {
return nmCliente;
}
public void setNmCliente(String nmCliente) {
this.nmCliente = nmCliente;
}
public String getObservacoes() {
return observacoes;
}
public void setObservacoes(String observacoes) {
this.observacoes = observacoes;
}
}
DAOFactory
- Código:
import java.util.Scanner;
public class DAOFactory {
private int tipoBD;
public static Scanner scanner = new Scanner(System.in);
public DAOFactory() {
//Uma DAOFactory mais realista leria o tipoBD a partir
//de um arquivo de configurações. Para fins de simplicidade
//nossa DAOFactory pergunta diretamente para o usuário digitar
//o tipo de DAO que ela deverá criar
System.out.println("Digite o tipo de banco de dados que está escrito no arquivo de configurações");
System.out.println("1 - JDBC, 2 - Hibernate");
tipoBD = scanner.nextInt();
}
public ClienteDAO getClienteDAO() {
//Retorna um objeto que implementa a interface ClienteDAO
//A classe do objeto vai depender do tipoBD.
if (tipoBD == 1) {
return new JDBCClienteDAO();
} else if (tipoBD == 2) {
return new HbnClienteDAO();
} else {
//lanca um erro ao usuário
throw new RuntimeException("Tipo de banco de dados desconhecido!");
}
}
}
ClienteDAO
- Código:
public interface ClienteDAO {
//Representa um tipo de objeto com a capacidade de salvar
//clientes em um banco de dados
public void saveCliente(Cliente cliente);
}
JDBCClienteDAO
- Código:
public class JDBCClienteDAO implements ClienteDAO{
//Classe que representa o objeto que tem a capacidade
//de gravar clientes no banco de dados utilizando
//a tecnologia JDBC
public void saveCliente(Cliente cliente) {
System.out.println("Fingindo que está gravando cliente usando JDBC");
System.out.println("Nome do cliente: " + cliente.getNmCliente());
}
}
HbnClienteDAO
- Código:
public class HbnClienteDAO implements ClienteDAO{
//Classe que representa o objeto que tem a capacidade
//de gravar clientes no banco de dados utilizando
//a tecnologia hibernate
public void saveCliente(Cliente cliente) {
System.out.println("Fingindo que está gravando cliente usando Hibernate");
System.out.println("Nome do cliente: " + cliente.getNmCliente());
}
}
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|