Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
3.2.2.2. Configuração das Alterações para os Aplicativos que Utilizam Hibernate e JPA
Sumário
Se o seu aplicativo possui um arquivo persistence.xml
ou o código utiliza as anotações @PersistenceContext
ou @PersistenceUnit
, o JBoss EAP 6 detectará isto durante a implantação e considerará que o aplicativo está usando JPA. Ele adiciona implicitamente o Hibernate 4, mais algumas outras dependências, ao caminho de classe do seu aplicativo.
Se o seu aplicativo utiliza atualmente as bibliotecas do Hibernate 3, é possível, na maioria das vezes, trocar para o Hibernate 4 e executar o aplicativo com êxito. No entanto, caso encontre
ClassNotFoundExceptions
quando estiver implantando seu aplicativo, pode ser possível resolver esse problema usando uma das seguintes abordagens.
Importante
Os aplicativos que utilizam Hibernate diretamente com Seam 2.2 podem usar uma versão do Hibernate 3 empacotada dentro do aplicativo. O Hibernate 4, que é fornecido através do módulo org.hibernate do JBoss EAP 6, não é suportado pelo Seam 2.2. Este exemplo tem a intenção de ajudá-lo a executar seu aplicativo no JBoss EAP 6 como uma primeira etapa. Observe que o empacotamento do Hibernate 3 com um aplicativo Seam 2.2 não é uma configuração com suporte.
Procedimento 3.13. Configuração do Aplicativo
Copie os JARs necessários do Hibernate 3 para a biblioteca do seu aplicativo.
Você pode conseguir resolver o problema copiando os JARs específicos do Hibernate 3 que contêm as classes faltantes no diretóriolib/
do aplicativo ou adicionando-os ao caminho de classe usando algum outro método. Em alguns casos, isto pode resultar emClassCastExceptions
ou em outros problemas de carregamento de classe devido ao uso misto das versões Hibernate. Caso isto aconteça, você precisará usar a próxima abordagem.Instrua o servidor para usar apenas as bibliotecas do Hibernate 3.
O JBoss EAP 6 permite que você empacote os jars do provedor de persistência Hibernate 3.5 (ou posterior) com o aplicativo. Para direcionar o servidor para o uso apenas das bibliotecas do Hibernate 3 e excluir as bibliotecas do Hibernate 4, você precisa determinarjboss.as.jpa.providerModule
comohibernate3-bundled
nopersistence.xml
, conforme a seguir:<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name="plannerdatasource_pu"> <description>Hibernate 3 Persistence Unit.</description> <jta-data-source>java:jboss/datasources/PlannerDS</jta-data-source> <properties> <property name="hibernate.show_sql" value="false" /> <property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" /> </properties> </persistence-unit> </persistence>
O implantador Java Persistence API (JPA) detectará a presença de um provedor de persistência no aplicativo e usará as bibliotecas do Hibernate 3. Consulte Seção 3.2.2.3, “Propriedades da Unidade de Persistência” para mais informações sobre as propriedades de persistência JPA.Desabilite o cache de segundo nível do Hibernate
O cache de segundo nível para o Hibernate 3 não exibe o mesmo comportamento com o JBoss EAP 6, como fazia nas versões anteriores. Caso você esteja usando o cache de segundo nível do Hibernate com o seu aplicativo, você deve desativá-lo até que ele seja atualizado para o Hibernate 4. Para desativar o cache de segundo nível, configure o<hibernate.cache.use_second_level_cache>
comofalse
no arquivopersistence.xml
.