Dar uma olhada nesse livro, pois fazer manutenção em código cheio de SQL não é aconsekhável, pois imagina que teu cliente deseja mudar para outro banco, tipo oracle, ai vc vai ter que ajsuatr todos os SQL que não funcionam no oracle. Hibernate é uma ferramente poderossima de mapeamento objeto relacional e ainda oferece possibilidades de consultas OO.
Já usei o Hibernate e hoje estou em um conflito danado entre ele e o JDBC. Até criei um post sobre isso, na semana passada, para tratar desse assunto.
Veja: http://www.guj.com.br/posts/list/73078.java
Agora, esse livro é melhor que o Hibernate em Ação? Tenho este último e a tradução torna a sua leitura quase impraticável.
Ainda não vi a tradução dele, mas o original em inglês está bom, este livro mostra como fazer o mapeamento usando annontations, que elimina o uso de XML para mapear as classes.
Mas ainda gostaria de saber informações sobre o livro que citei. Pretendo compra-lo amanhã.
Também gostaria de receber as críticas quanto a modelagem que adotei. Como das outras vezes, sinto que algo não está legal, mas não sei o que é!
Abraços!
P.S. Você tem algum irmão, primo, tio, sei lá, chamado Marlos? Jogador de Xadrez? Conheço um grande jogador chamado Marlos Damasceno que participa de um fórum de xadrez, onde também participo, o clube-de-xadrez.
[quote=celso.martins]A propósito, alguém conhece o livro: Modelagem e Projetos Baseados em Objetos - Tradução da 2ª Edição
Rumbaugh, James; Blaha, Michael / CAMPUS[/quote]
Eu conheço, já li esse livro e é muito bom. Recomendo.
Acho que ficou, conceitualmente, um pouco mais bonito.
Criei o método liberaConexao em DAOGenerico e movi para lá <<dao = null e conn = null>>
A classe DAO permanece igual:
package br.com.trimbase.rastreio.bd;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public abstract class DAOGenerico {
private DAO dao = new DAO();
private Connection conn = dao.getConnection();
public long getCodigo(String sequencia) {
long retorno = 0;
PreparedStatement stmt;
String sql;
try {
sql = " SELECT nextval(\'" + sequencia + "\') ";
stmt = getConn().prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while ((rs != null) && (rs.next())) {
retorno = rs.getLong(1);
}
}catch(Exception e) {
e.printStackTrace();
}
liberaConexao(conn);
sql = null;
stmt = null;
dao = null;
conn = null;
return retorno;
}
public void liberaConexao(Connection conn) {
dao.liberaConexao(conn);
this.dao = null;
this.conn = null;
}
public Connection getConn() {
return conn;
}
public void setConn(Connection conn) {
this.conn = conn;
}
public DAO getDao() {
return dao;
}
public void setDao(DAO dao) {
this.dao = dao;
}
}