Galera,
Apesar de ter me cadastrado no forum a muito tempo, agora estou começando a participar.
Sou programador PHP e quero muito aprender java, já li algumas apostilas da caelum e outros materiais da net.
Aprendi sobre OO quando esta fazendo a graduação e usamos java como plataforma, pena que máteria é muito corrida e só da uma base geral, enfim, vamos ao que interessa.
Fiz varios teste usando JDBC puro com mysql em um arquivo só e funcionou beleza, usei o banco MySQL.
Agora estou estudando java com 3 camadas, segue um exemplo que achei no guj e gostaria de ouvir a opinião de vocês sobre como ficou meu teste.
Esse é o arquivo de conexão.
package persistencia;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* Classe que controla a conexão com o banco de dados
* @author eu
*/
public class Conexao {
private static Conexao instance = null;
private String url = null;
private String user = null;
private String pass = null;
private String driver = null;
private Connection conn = null;
private Conexao() throws SQLException, ClassNotFoundException {
this.driver = "sun.jdbc.odbc.JdbcOdbcDriver";
this.user = "root";
this.pass = "";
this.url = "jdbc:mysql://localhost/teste";
Class.forName(this.driver);
conn = DriverManager.getConnection(url,user,pass);
}
public Connection getConnection() {
return this.conn;
}
public static Conexao getInstance() throws SQLException, ClassNotFoundException {
if (instance == null) {
instance = new Conexao();
}
return instance;
}
}
Classe setor (eu poderia ter colocado para setar nome no construtor, mas o foco foi testar mvc mesmo)
package modelo;
import java.sql.SQLException;
import persistencia.SetorDAO;
/**
* Classe que representa o setor
* @author eu
*/
public class Setor {
private String nome;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
public void insert() throws SQLException, ClassNotFoundException {
SetorDAO dao = new SetorDAO(this);
dao.insert();
}
}
Persistencia SetorDAO
package persistencia;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import modelo.Setor;
/**
* Persistencia com Setor
* @author eu
*/
public class SetorDAO {
private Setor setor = null;
public SetorDAO(Setor setor) {
this.setor = setor;
}
public void insert() throws SQLException, ClassNotFoundException {
String sql = "insert into setor (cod_setor,nome)values(?,?)";
Conexao conn = Conexao.getInstance();
PreparedStatement query = conn.getConnection().prepareStatement(sql);
query.setString(1,null);
query.setString(2,this.setor.getNome());
query.executeUpdate();
query.close();
}
}
Programa principal (teste)
package visao;
import modelo.Setor;
/**
*
* @author eu
*/
public class Principal {
public static void main(String args[]) {
Setor setor = new Setor();
setor.setNome("teste123");
System.out.println(setor.getNome());
try {
setor.insert();
} catch (Exception e1) {
System.out.println(e1.getMessage());
}
}
}
A minha idía seria talvez passar para o motodo insert da classe DAO o objetco setor, assim eu eliminaria o método insert que existe na classe Setor.
Como vocês avaliam este exemplo criado? Fiz alguma coisa errada? O que poderia ser melhorado?
obs: Esta cadastrando corretamente.
Se vocês tiverem mais material de java mvc para me indicar ficarei grato, pois quero muito aprender.
Valeu.



