Olá a todos,
Iniciei um estudo sobre o Hibernate e tenho achado ele muito interessante, estou usando o NetBeans 6.8 e fiz o mapeamento de toda a minha base de modo automático, o Hibernate gerou todas as classes para mim.
Manipular os dados foi simples, desde que eu o esteja fazendo para uma única tabela… meu problema é que eu ainda não entendi como, por exemplo, buscar dados em duas tabelas (devidamente relacionadas).
Classe Dao:
public class Dao<T> {
private final Session session;
private Transaction transaction;
private final Class classe;
public Dao(Session session, Class classe) {
this.session = session;
this.classe = classe;
}
public List<T> listaTudo() {
return this.session.createCriteria(this.classe).list();
}
public T procuraPorCod(Long id) {
return (T) session.load(this.classe, id);
}
public List<T> sqlQuery(String sql) {
return this.session.createSQLQuery(sql)
.setResultTransformer(Transformers.aliasToBean(classe)).list();
}
}
Classe DaoFactory:
public class DaoFactory {
private final Session session;
public DaoFactory() {
this.session = HibernateUtil.getSession();
}
public Dao<AteUsuarios> getUsuarioDao() {
return new Dao<AteUsuarios>(this.session, AteUsuarios.class);
}
}
Classe de usuários:
package domain;
// Generated 20/04/2010 10:00:19 by Hibernate Tools 3.2.1.GA
import java.util.HashSet;
import java.util.Set;
/**
* AteUsuarios generated by hbm2java
*/
public class AteUsuarios implements java.io.Serializable {
private long codUsuario;
private AteEmpresas ateEmpresas;
private String nomUsuario;
private String nomLogin;
private String desSenha;
private String desEmail;
private Character flgAnalista;
private Character flgAtivo;
private Set ateUsuariosObjetoses = new HashSet(0);
private Set ateSistemases = new HashSet(0);
private Set ateChamadoses = new HashSet(0);
private Set ateChamadoAtendidos = new HashSet(0);
public AteUsuarios() {
}
public AteUsuarios(long codUsuario) {
this.codUsuario = codUsuario;
}
public AteUsuarios(long codUsuario, AteEmpresas ateEmpresas, String nomUsuario, String nomLogin, String desSenha, String desEmail, Character flgAnalista, Character flgAtivo, Set ateUsuariosObjetoses, Set ateSistemases, Set ateChamadoses, Set ateChamadoAtendidos) {
this.codUsuario = codUsuario;
this.ateEmpresas = ateEmpresas;
this.nomUsuario = nomUsuario;
this.nomLogin = nomLogin;
this.desSenha = desSenha;
this.desEmail = desEmail;
this.flgAnalista = flgAnalista;
this.flgAtivo = flgAtivo;
this.ateUsuariosObjetoses = ateUsuariosObjetoses;
this.ateSistemases = ateSistemases;
this.ateChamadoses = ateChamadoses;
this.ateChamadoAtendidos = ateChamadoAtendidos;
}
public long getCodUsuario() {
return this.codUsuario;
}
public void setCodUsuario(long codUsuario) {
this.codUsuario = codUsuario;
}
public AteEmpresas getAteEmpresas() {
return this.ateEmpresas;
}
public void setAteEmpresas(AteEmpresas ateEmpresas) {
this.ateEmpresas = ateEmpresas;
}
public String getNomUsuario() {
return this.nomUsuario;
}
public void setNomUsuario(String nomUsuario) {
this.nomUsuario = nomUsuario;
}
public String getNomLogin() {
return this.nomLogin;
}
public void setNomLogin(String nomLogin) {
this.nomLogin = nomLogin;
}
public String getDesSenha() {
return this.desSenha;
}
public void setDesSenha(String desSenha) {
this.desSenha = desSenha;
}
public String getDesEmail() {
return this.desEmail;
}
public void setDesEmail(String desEmail) {
this.desEmail = desEmail;
}
public Character getFlgAnalista() {
return this.flgAnalista;
}
public void setFlgAnalista(Character flgAnalista) {
this.flgAnalista = flgAnalista;
}
public Character getFlgAtivo() {
return this.flgAtivo;
}
public void setFlgAtivo(Character flgAtivo) {
this.flgAtivo = flgAtivo;
}
public Set getAteUsuariosObjetoses() {
return this.ateUsuariosObjetoses;
}
public void setAteUsuariosObjetoses(Set ateUsuariosObjetoses) {
this.ateUsuariosObjetoses = ateUsuariosObjetoses;
}
public Set getAteSistemases() {
return this.ateSistemases;
}
public void setAteSistemases(Set ateSistemases) {
this.ateSistemases = ateSistemases;
}
public Set getAteChamadoses() {
return this.ateChamadoses;
}
public void setAteChamadoses(Set ateChamadoses) {
this.ateChamadoses = ateChamadoses;
}
public Set getAteChamadoAtendidos() {
return this.ateChamadoAtendidos;
}
public void setAteChamadoAtendidos(Set ateChamadoAtendidos) {
this.ateChamadoAtendidos = ateChamadoAtendidos;
}
}
Classe objetos:
package domain;
// Generated 20/04/2010 10:00:19 by Hibernate Tools 3.2.1.GA
import java.util.HashSet;
import java.util.Set;
/**
* AteObjetos generated by hbm2java
*/
public class AteObjetos implements java.io.Serializable {
private long codObjeto;
private String desObjeto;
private String nomPagina;
private String imgPagina;
private Character flgAtivo;
private Set ateUsuariosObjetoses = new HashSet(0);
public AteObjetos() {
}
public AteObjetos(long codObjeto) {
this.codObjeto = codObjeto;
}
public AteObjetos(long codObjeto, String desObjeto, String nomPagina, String imgPagina, Character flgAtivo, Set ateUsuariosObjetoses) {
this.codObjeto = codObjeto;
this.desObjeto = desObjeto;
this.nomPagina = nomPagina;
this.imgPagina = imgPagina;
this.flgAtivo = flgAtivo;
this.ateUsuariosObjetoses = ateUsuariosObjetoses;
}
public long getCodObjeto() {
return this.codObjeto;
}
public void setCodObjeto(long codObjeto) {
this.codObjeto = codObjeto;
}
public String getDesObjeto() {
return this.desObjeto;
}
public void setDesObjeto(String desObjeto) {
this.desObjeto = desObjeto;
}
public String getNomPagina() {
return this.nomPagina;
}
public void setNomPagina(String nomPagina) {
this.nomPagina = nomPagina;
}
public String getImgPagina() {
return this.imgPagina;
}
public void setImgPagina(String imgPagina) {
this.imgPagina = imgPagina;
}
public Character getFlgAtivo() {
return this.flgAtivo;
}
public void setFlgAtivo(Character flgAtivo) {
this.flgAtivo = flgAtivo;
}
public Set getAteUsuariosObjetoses() {
return this.ateUsuariosObjetoses;
}
public void setAteUsuariosObjetoses(Set ateUsuariosObjetoses) {
this.ateUsuariosObjetoses = ateUsuariosObjetoses;
}
}
E a classe usuarios/objetos:
package domain;
// Generated 20/04/2010 10:00:19 by Hibernate Tools 3.2.1.GA
/**
* AteUsuariosObjetos generated by hbm2java
*/
public class AteUsuariosObjetos implements java.io.Serializable {
private AteUsuariosObjetosId id;
private AteUsuarios ateUsuarios;
private AteObjetos ateObjetos;
private Character flgAcesso;
public AteUsuariosObjetos() {
}
public AteUsuariosObjetos(AteUsuariosObjetosId id, AteUsuarios ateUsuarios, AteObjetos ateObjetos) {
this.id = id;
this.ateUsuarios = ateUsuarios;
this.ateObjetos = ateObjetos;
}
public AteUsuariosObjetos(AteUsuariosObjetosId id, AteUsuarios ateUsuarios, AteObjetos ateObjetos, Character flgAcesso) {
this.id = id;
this.ateUsuarios = ateUsuarios;
this.ateObjetos = ateObjetos;
this.flgAcesso = flgAcesso;
}
public AteUsuariosObjetosId getId() {
return this.id;
}
public void setId(AteUsuariosObjetosId id) {
this.id = id;
}
public AteUsuarios getAteUsuarios() {
return this.ateUsuarios;
}
public void setAteUsuarios(AteUsuarios ateUsuarios) {
this.ateUsuarios = ateUsuarios;
}
public AteObjetos getAteObjetos() {
return this.ateObjetos;
}
public void setAteObjetos(AteObjetos ateObjetos) {
this.ateObjetos = ateObjetos;
}
public Character getFlgAcesso() {
return this.flgAcesso;
}
public void setFlgAcesso(Character flgAcesso) {
this.flgAcesso = flgAcesso;
}
}
Hoje para um select simples eu faço o seguinte:
Dao dao = new DaoFactory().getUsuarioDao();
List<AteUsuarios> lista = dao.listaTudo();
for (AteUsuarios usuario : lista) {
System.out.println(usuario.getCodUsuario()+" - "+usuario.getNomUsuario());
}
Minha dúvida é como eu devo fazer para retornar os objetos de um determinado usuário ?