Artigo Java Magazine 33 - Tira Dúvidas

Artigo Publicado pela Java Magazine 33.

Esse artigo faz parte da revista Java Magazine edição 33. Clique aqui para ler todos os artigos desta edição


Clique aqui para ler esse artigo em PDF.

Tira-Dúvidas

 

EntityManager e driver JDBC

Estou desenvolvendo para minha monografia uma aplicação com EJB 3.0, utilizando o Hibernate, fazendo uso da API Hibernate EntityManager. Para a criação do meu EntityManager crio um factory:

 

EntityManagerFactory emf =

Persistence.createEntityManagerFactory("sistemabancario");
 

Mas recebo um ClassDefNotFoundException. Além disso, o meu classpath contém o arquivo mysql-connector-java-<versão>-bin.jar, que acredito ser o equivalente ao hsqldb.jar utilizado pelo exemplo da matéria na Edição 28.

Guilherme Melo

 

Quanto à primeira dúvida, o EntityManager deve ser utilizado somente para EJBs dentro de um container EJB (parte do servidor JEE). Ele é usado quando se usa o Hibernate como a implementação do CMP (persistência gerenciada pelo container) do servidor de aplicações, e exige passos adicionais de configuração que são dependentes do container EJB utilizado. Então em vez de utilizar diretamente as classes e configurações para EJB 3.0 do Hibernate, devem ser utilizadas as classes da especificação EJB 3.0 e as configurações oferecidas pelo seu servidor de aplicações – JBoss 4, Glassfish, Oracle AS ou outro que já inclua um preview do EJB 3.0.

Observe que os exemplos do artigo da Edição 28 em nenhum momento utilizam o EntityManager. Os exemplos funcionam sem modificações em um container web ou mesmo num container EJB (em EJBs session, por exemplo), incluindo suporte a CMT (transações gerenciadas pelo container) e DataSources do container. O que muda é apenas o arquivo de configuração hibernate.cfg.xml (a documentação do Hibernate indica as mudanças necessárias).

Quanto à segunda dúvida, o arquivo mysql-conector-stable-<versão>-bin.jar é a distribuição completa do MySQL JDBC Connector (nome pomposo do driver JDBC do MySQL), que contém fontes, exemplos e documentação. Você deve descompactar esse jar (utilizando o comando jar xvf ou qualquer descompactador para arquivos zip). É dentro dele que está o arquivo jar com o driver JDBC do MySQL.

Experimente usar uma aplicação Java simples para conectar ao banco de dados, para ter certeza de que estão sendo usados o driver, a url e outros parâmetros corretamente antes de tentar usar o Hibernate. E lembre-se que no MySQL será necessário criar um usuário com permissão para estabelecer conexões "remotas" partindo do endereço IP 127.0.0.1 (que para o MySQL é diferente do localhost).

Fernando Lozano

Hibernate na web e pools de conexões

Escrevi uma aplicação web com Struts baseada no exemplo (não-web) do artigo sobre Hibernate, publicado na Edição 28. Percebi que as conexões com o HSQLDB ficam abertas depois de listar os clientes. Minha aplicação web conecta ao mesmo banco de dados HSQLDB que o usado no exemplo do artigo (porém estou usando o modo Server). Quando executo o exemplo e depois visualizo as conexões no prompt do Linux com o comando " [...] continue lendo...

Artigos relacionados