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

  1. 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ório lib/ do aplicativo ou adicionando-os ao caminho de classe usando algum outro método. Em alguns casos, isto pode resultar em ClassCastExceptions 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.
  2. 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 determinar jboss.as.jpa.providerModule como hibernate3-bundled no persistence.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.
  3. 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> como false no arquivo persistence.xml.