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?







