Dev (Back & Front)ARTIGO

Hibernate schema diferente via Java Project

Olá, pessoal! Este artigo é um pouco diferente do que vimos no Mapeando schemas diferentes com o Hibernate. Lá tivemos que criar um bean para representar a tabela, hoje vamos usar um mapeamento para uma tabela já existente – assim, evitamos ter dois beans para uma mesma tabela.

Contexto

No contexto ddo artigo Mapeando schemas diferentes com o Hibernate, nós assumimos que não existia nenhuma projeto Java que usasse o schema ereaders. Mas no contexto de hoje vamos supor que tenha um outro projeto que use e já tenha os devidos mapeamentos para a tabela ereaders.usuario e não queremos criar um novo bean em nosso projeto só para ler esse schema. Então, pensamos em aproveitar o mapeamento já feito e usá-lo. Isso nos ajuda até em não ter que ficar atualizando cada bean, caso algum atributo da tabela venha sofrer alteração. Então, temos os seguintes projetos Java:

O projeto sem numeração é o que tem o mapeamento usando annotations para a tabela que está no ereaders. Como usar esse bean em outro projeto Java?

Muito simples, basta adicionar ao projeto HibernateSchema2 uma dependência com o projeto HibernateSchema. Assim, podemos acessar as classes disponíveis naquele projeto. Para fazer isso, clique com o botão direito do projeto >> build path >> configure build path e adicione o projeto HibernateSchema, conforme a imagem a seguir:

No arquibo hibernate.cfg.xml informamos a classe nova que o projeto deve reconhecer via Hibernate:

<mapping class="br.com.camilolopes.bean.Usuarios"/>

Testando

Faremos algo semelhante ao que vimos no outro artigo: vamos ler dados da tabela e imprimir o valor em seguida, porém, vamos usar Criteria API:

public class UserDAO extends DAO {

public List getListUsers(){
begin();
Criteria criteria = getSession().createCriteria(Usuarios.class);
return criteria.list();
}
}

Na classe main, adicionamos o codigo:
public static void main(String[] args) {
UserDAO userDAO = new UserDAO();
List<Usuarios> listUsers = userDAO.getListUsers();
for (Usuarios usuarios : listUsers) {
System.out.println(usuarios.getEmail()); } }

O resultado:

Nada de novo; o mesmo resultado que tivemos no outro artigo. Mas, qual a diferença? Veremos isso com base no que pode ser um  “problema” em alguns projetos:

  • Problema
    Um dos problemas é ter dependência com outro projeto, ou seja, se o outro não buildar/ compilar, o seu ficará preso. E isso em alguns cenários pode ser ruim; depende da relação entre os projetos.
  • Vantagem

Você não precisa ter mais dois beans para a mesma tabela, então, tudo é focado apenas no bean que já está no outro projeto. Caso este sofra alterações, não preciso mudar o projeto HibernateSchema2. E evita essas duplicações de beans.

Qual usar?

Como falei, não há segredo e, sim, necessidade. O que importa mais no seu projeto?

é Bacharel em Sistemas de Informação e Especialista em Gestão e Estratégia de Negócios. Trabalha com TI desde 2003 e possui as certificações SCJP 5 e SCM. Trabalhou na IBM Brasil como Analista Programador Java, passou pelo laboratório da Enterprise Computing Lab (ECL) HP como Software Engineer, Ci&amp;T como Engenheiro de Software em projeto JEE. Tem experiência internacional em Índia, Dubai e Londres. Atualmente é cofundador da ITSLabs (www.itslabs.com.br), uma start-up focada na criação de produtos web e mobile para start-ups. Também é autor dos livros "Guia do Exame SCJP", "Guia Prático JEE com Frameworks" e "TDD na prática".

Ver perfil