Clique com o botão direito no nosso projeto, e escolha a opção Novo (New), Classe Java (Java Class). Na caixa de diálogo que se abre, nomeie a classe (Class Name) como UsuarioDao e escreva no campo Pacote (Package), o valor 'javabahia.dao'; clique no botão Finalizar (Finish).
O Netbeans abrirá o editor de código para a classe recém-criada. Digite o código mostrado a seguir:
***
public class UsuarioDao {
private EntityManager em;
public UsuarioDao() {
// criação do entity manager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JavaBahiaAppPU");
em = emf.createEntityManager();
}
public void close() {
em.close();
}
public void inserir(Usuario usuario) {
em.getTransaction().begin(); // abre uma transação
try {
usuario = em.merge(usuario); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(usuario); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void atualizar(Usuario usuario) {
em.getTransaction().begin(); // abre uma transação
try {
usuario = em.merge(usuario); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(usuario); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void excluir(Usuario usuario) {
em.getTransaction().begin(); // abre uma transação
try {
// atualiza a referência do objeto antes de removê-lo
Usuario ref = em.find(Usuario.class, usuario.getLogin());
em.remove(ref); // remove o objeto
em.getTransaction().commit(); // encerra a transação
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public List obterTodos() {
Query qry = em.createQuery("select u from Usuario u");
return qry.getResultList();
}
public Usuario obterPorChave(String login) {
Query qry = em.createQuery("select u from Usuario u where u.login = :param1");
qry.setParameter("param1", login);
return (Usuario) qry.getSingleResult();
}
public Usuario obterPorLoginSenha(String login, String senha) {
Query qry = em.createQuery("select u from Usuario u where u.login = :param1 and u.senha = :param2");
qry.setParameter("param1", login);
qry.setParameter("param2", senha);
return (Usuario) qry.getSingleResult();
}
}
***
Vamos às explicações sobre alguns trechos de código.
private EntityManager em;
// (...)
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JavaBahiaAppPU");
em = emf.createEntityManager();
Essa é a forma como obtemos uma instância da classe EntityManager, responsável pelas operações de persistência dos objetos. As entidades persistentes são associadas a um contexto de persistência (a classe Persistence) e precisam de um provedor de persistência para mostrar como as “coisas” funcionam. As configurações utilizadas pelo provedor de persistência são descritas no arquivo persistence.xml, dentro da pasta META-INF, e nomeadas por uma unidade de persistência (persistence unit).
em.getTransaction().begin();
// (...)
em.getTransaction().commit();
// (...)
em.getTransaction().rollback();
Estas linhas de código servem para, respectivamente, abrir uma transação, finalizar uma transação, e desfazer uma transação.
usuario = em.merge(usuario);
O método merge() coloca o objeto no estado gerenciado pelo contexto de persistência e o insere, ou atualiza-o, no banco de dados. Ele sempre devolve o objeto atualizado pelo banco de dados.
Usuario ref = em.find(Usuario.class, usuario.getLogin());
em.remove(ref);
O método remove() retira o objeto da gerência do contexto de persistência, o que levará o Hibernate a excluí-lo do banco de dados. Antes de remover o objeto, precisamos atualizar a referência do objeto; senão, uma exceção será lançada pelo EntityManager.
Agora, crie também os arquivos EmpresaDao, ContratoDao, e ContratadaDao, lembrando de colocá-los no mesmo pacote 'javabahia.dao'.
***
public class EmpresaDao {
private EntityManager em;
public EmpresaDao() {
// criação do entity manager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JavaBahiaAppPU");
em = emf.createEntityManager();
}
public void close() {
em.close();
}
public void inserir(Empresa empresa) {
em.getTransaction().begin(); // abre uma transação
try {
empresa = em.merge(empresa); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(empresa); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void atualizar(Empresa empresa) {
em.getTransaction().begin(); // abre uma transação
try {
empresa = em.merge(empresa); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(empresa); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void excluir(Empresa empresa) {
em.getTransaction().begin(); // abre uma transação
try {
// atualiza a referência do objeto antes de removê-lo
Empresa ref = em.find(Empresa.class, empresa.getCnpj());
em.remove(ref); // remove o objeto
em.getTransaction().commit(); // encerra a transação
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public List obterTodos() {
Query qry = em.createQuery("select e from Empresa e");
return qry.getResultList();
}
public Empresa obterPorChave(String cnpj) {
Query qry = em.createQuery("select e from Empresa e where e.cnpj = :param1");
qry.setParameter("param1", cnpj);
return (Empresa) qry.getSingleResult();
}
}
***
public class ContratoDao {
private EntityManager em;
public ContratoDao() {
// criação do entity manager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JavaBahiaAppPU");
em = emf.createEntityManager();
}
public void close() {
em.close();
}
public void inserir(Contrato contrato) {
em.getTransaction().begin(); // abre uma transação
try {
contrato = em.merge(contrato); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(contrato); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void atualizar(Contrato contrato) {
em.getTransaction().begin(); // abre uma transação
try {
contrato = em.merge(contrato); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(contrato); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void excluir(Contrato contrato) {
em.getTransaction().begin(); // abre uma transação
try {
// atualiza a referência do objeto antes de removê-lo
Contrato ref = em.find(Contrato.class, contrato.getNumero());
em.remove(ref); // remove o objeto
em.getTransaction().commit(); // encerra a transação
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public List obterTodos() {
Query qry = em.createQuery("select c from Contrato c");
return qry.getResultList();
}
public Contrato obterPorChave(Integer numero) {
Query qry = em.createQuery("select c from Contrato c where c.numero = :param1");
qry.setParameter("param1", numero);
return (Contrato) qry.getSingleResult();
}
}
***
public class ContratadaDao {
private EntityManager em;
public ContratadaDao() {
// criação do entity manager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JavaBahiaAppPU");
em = emf.createEntityManager();
}
public void close() {
em.close();
}
public void inserir(Contratada contratada) {
em.getTransaction().begin(); // abre uma transação
try {
contratada = em.merge(contratada); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(contratada); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void atualizar(Contratada contratada) {
em.getTransaction().begin(); // abre uma transação
try {
contratada = em.merge(contratada); // persiste o objeto e devolve-o sincronizado
em.getTransaction().commit(); // encerra a transação
em.refresh(contratada); // atualiza a referência do objeto
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public void excluir(Contratada contratada) {
em.getTransaction().begin(); // abre uma transação
try {
// atualiza a referência do objeto antes de removê-lo
Contratada ref = em.find(Contratada.class, contratada.getContratadaPK());
em.remove(ref); // remove o objeto
em.getTransaction().commit(); // encerra a transação
} catch (Exception e) {
em.getTransaction().rollback(); // desfaz a transação
}
}
public List obterTodos() {
Query qry = em.createQuery("select c from Contratada c");
return qry.getResultList();
}
public Contratada obterPorChave(ContratadaPK pk) {
Query qry = em.createQuery("select c from Contratada c where c.contratadaPK.cnpjempresa = :param1 and c.contratadaPK.numerocontrato = :param2");
qry.setParameter("param1", pk.getCnpjempresa());
qry.setParameter("param2", pk.getNumerocontrato());
return (Contratada) qry.getSingleResult();
}
public List obterPorNumeroContrato(Integer numeroContrato) {
Query qry = em.createQuery("select c from Contratada c where c.contratadaPK.numerocontrato = :param1");
qry.setParameter("param1", numeroContrato);
return qry.getResultList();
}
public List obterPorCnpjEmpresa(String cnpjEmpresa) {
Query qry = em.createQuery("select c from Contratada c where c.cnpjempresa = :param1");
qry.setParameter("param1", cnpjEmpresa);
return qry.getResultList();
}
}
***
Criadas as classes de persistência, vamos agora criar a classe que irá encapsular todo esse subsistema: o Façade. Clique com o botão direito no nosso projeto, e escolha a opção Novo (New), Classe Java (Java Class). Na caixa de diálogo que se abre, nomeie a classe (Class Name) como JavaBahiaFacade e escreva no campo Pacote (Package), o valor 'javabahia'; clique no botão Finalizar (Finish). O Netbeans abrirá o editor de código para a classe recém-criada. Digite o código como é mostrado a seguir:
***
public class JavaBahiaFacade {
public JavaBahiaFacade() {
}
public Usuario obterUsuarioPorLoginSenha(String login, String senha) {
UsuarioDao dao = new UsuarioDao();
Usuario obj = dao.obterPorLoginSenha(login, senha);
dao.close();
return obj;
}
public Usuario obterUsuarioPorLogin(String login) {
UsuarioDao dao = new UsuarioDao();
Usuario obj = dao.obterPorChave(login);
dao.close();
return obj;
}
public List obterTodosUsuarios() {
UsuarioDao dao = new UsuarioDao();
List lista = dao.obterTodos();
dao.close();
return lista;
}
public void inserirUsuario(Usuario usuario) {
UsuarioDao dao = new UsuarioDao();
dao.inserir(usuario);
dao.close();
}
public void atualizarUsuario(Usuario usuario) {
UsuarioDao dao = new UsuarioDao();
dao.atualizar(usuario);
dao.close();
}
public void excluirUsuario(Usuario usuario) {
UsuarioDao dao = new UsuarioDao();
dao.excluir(usuario);
dao.close();
}
public Empresa obterEmpresaPorCnpj(String cnpj) {
EmpresaDao dao = new EmpresaDao();
Empresa obj = dao.obterPorChave(cnpj);
dao.close();
return obj;
}
public List obterTodasEmpresas() {
EmpresaDao dao = new EmpresaDao();
List lista = dao.obterTodos();
dao.close();
return lista;
}
public void inserirEmpresa(Empresa empresa) {
EmpresaDao dao = new EmpresaDao();
dao.inserir(empresa);
dao.close();
}
public void atualizarEmpresa(Empresa empresa) {
EmpresaDao dao = new EmpresaDao();
dao.atualizar(empresa);
dao.close();
}
public void excluirEmpresa(Empresa empresa) {
EmpresaDao dao = new EmpresaDao();
dao.excluir(empresa);
dao.close();
}
public Contrato obterContratoPorNumero(Integer numero) {
ContratoDao dao = new ContratoDao();
Contrato obj = dao.obterPorChave(numero);
dao.close();
return obj;
}
public List obterTodosContratos() {
ContratoDao dao = new ContratoDao();
List lista = dao.obterTodos();
dao.close();
return lista;
}
public void inserirContrato(Contrato contrato) {
ContratoDao dao = new ContratoDao();
dao.inserir(contrato);
dao.close();
}
public void atualizarContrato(Contrato contrato) {
ContratoDao dao = new ContratoDao();
dao.atualizar(contrato);
dao.close();
}
public void excluirContrato(Contrato contrato) {
ContratoDao dao = new ContratoDao();
dao.excluir(contrato);
dao.close();
}
public Contratada obterContratadaPorContratoEmpresa(Integer numeroContrato, String cnpjEmpresa) {
ContratadaDao dao = new ContratadaDao();
ContratadaPK chave = new ContratadaPK();
chave.setNumerocontrato(numeroContrato);
chave.setCnpjempresa(cnpjEmpresa);
Contratada obj = dao.obterPorChave(chave);
dao.close();
return obj;
}
public List obterTodasContratadasPorContrato(Integer numeroContrato) {
ContratadaDao dao = new ContratadaDao();
List lista = dao.obterPorNumeroContrato(numeroContrato);
dao.close();
return lista;
}
public List obterTodasContratadasPorEmpresa(String cnpjEmpresa) {
ContratadaDao dao = new ContratadaDao();
List lista = dao.obterPorCnpjEmpresa(cnpjEmpresa);
dao.close();
return lista;
}
public void inserirContratada(Contratada contratada) {
ContratadaDao dao = new ContratadaDao();
dao.inserir(contratada);
dao.close();
}
public void atualizarContratada(Contratada contratada) {
ContratadaDao dao = new ContratadaDao();
dao.atualizar(contratada);
dao.close();
}
public void excluirContratada(Contratada contratada) {
ContratadaDao dao = new ContratadaDao();
dao.excluir(contratada);
dao.close();
}
}
***
Com isso, finalizamos o nosso componente Aplicação. Agora nos resta construir o componente Web, o qual será a nossa interface com o exemplo que estamos desenvolvendo. Isso ficará para o próximo post. Até lá!
PS: Os arquivos .java foram disponibilizados no serviço 4Shared mas foram apagados após um tempo de inatividade de minha conta. Por isso, colei o código das classes no meio do texto desse post e retirei os links originais.
4 comentários:
Muito Legal :)
sem querer pressionar, vocês tem previsão de quado será postada a terceira parte?
Grato,
Oi Inácio,
A quarta parte será postada ainda esta semana. Obrigado pela atenção!
Realmente, quarta parte :)
Obrigado pela dedicação.
Amigo você é uma pessoa que esta de parabéns, agradeçemos pela sua atenção e dedicação!
parabéns e succeso!
Fique com Deus !
Postar um comentário