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:
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. Reportar um erro
3.2.2.3. Propriedades da Unidade de Persistência
<?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>
Propriedades de Configuração do Hibernate 4.x
O JBoss EAP 6 automaticamente define as seguintes propriedades de configuração do Hibernate 4.x:
Tabela 3.4. Propriedades da Unidade de Persistência do Hibernate Nome da
Propriedade
Valor Padrão Propósito
hibernate.id .new_generat or_mappings
verdadeiro Esta configuração é relevante caso esteja usando
@GeneratedValue(AUTO) para gerar valores de chave de índice únicos para novas entidades. Os novos aplicativos devem manter o valor padrão true. Os aplicativos existentes que usavam Hibernate 3.3.x podem precisar alterá-lo para false para continuarem usando um objeto de sequência ou um gerador baseado em tabelas e manterem a compatibilidade com versões anteriores. O aplicativo pode substituir esse valor no arquivo persistence.xml.
Mais informações sobre este comportamento são fornecidas abaixo. hibernate.tr ansaction.jt a.platform Instância de Interface org.hibernat e.service.jt a.platform.s pi.JtaPlatfo rm
Esta classe passa o gerenciador de transação, a transação do usuário e o registro de sincronização da transação no Hibernate.
hibernate.ej b.resource_s canner Instância da Interface org.hibernat e.ejb.packag ing.Scanner
Essa classe sabe como utilizar o indexador de anotação do JBoss EAP 6 para fornecer uma implantação mais rápida.
hibernate.tr ansaction.ma nager_lookup _class
Essa propriedade é removida se encontrada no persistence.xml, já que pode entrar em conflito com
hibernate.transaction.jta.platform hibernate.se ssion_factor y_name QUALIFIED_PERS ISTENCE_UNIT_N AME
Configurado como o nome do aplicativo + o nome da unidade de persistência. O aplicativo pode especificar um valor diferente, mas ele deve ser único por todas as implantações do aplicativo na instância do JBoss EAP 6.
hibernate.se ssion_factor y_name_is_jn di
falso Configurado somente se o aplicativo não tiver especificado um valor para hibernate.session_factory_name.
hibernate.ej b.entitymana ger_factory_ name QUALIFIED_PERS ISTENCE_UNIT_N AME
Configurado como o nome do aplicativo + o nome da unidade da persistência. O aplicativo pode especificar um valor diferente, mas ele deve ser único por todas as implantações do aplicativo na instância do JBoss EAP 6.
No Hibernate 4.x, caso new_generator_mappings esteja configurado como true:
@GeneratedValue(AUTO) mapeia para
org.hibernate.id.enhanced.SequenceStyleGenerator.
@GeneratedValue(TABLE) mapeia para
org.hibernate.id.enhanced.TableGenerator.
@GeneratedValue(SEQUENCE) mapeia para
org.hibernate.id.enhanced.SequenceStyleGenerator.
No Hibernate 4.x, caso new_generator_mappings esteja configurado como false:
@GeneratedValue(AUTO) mapeia para Hibernate "native".
@GeneratedValue(TABLE) mapeia para
org.hibernate.id.MultipleHiLoPerTableGenerator.
@GeneratedValue(SEQUENCE) mapeia para Hibernate "seqhilo".
Para mais informações sobre essas propriedades, acesse http://www.hibernate.org/docs e consulte Hibernate 4.1 Developer Guide.
Propriedades de Persistência JPA
As propriedades JPA a seguir são suportadas na definição da unidade de persistência no arquivo
persistence.xml:
Tabela 3.5. Propriedades da Unidade de Persistência JPA Nome da
Propriedade
Valor Padrão Propósito
jboss.as.jpa .providerMod ule
org.hibernat e
O nome do módulo do provedor de persistência.
O valor deve ser hibernate3-bundled, caso os JARs do Hibernate 3 estiverem no arquivo do aplicativo.
Se o provedor de persistência estiver empacotado com o aplicativo, este valor deve ser application.
jboss.as.jpa .adapterModu le org.jboss.as .jpa.hiberna te:4
O nome das classes de integração que ajudam o JBoss EAP 6 a funcionar com o provedor de persistência.
Os valores atuais válidos são:
org.jboss.as.jpa.hibernate:4: destinado para as classes de integração do Hibernate 4 org.jboss.as.jpa.hibernate:3: destinado para as classes de integração do Hibernate 3
Reportar um erro
Sumário
Quando você atualizar o seu aplicativo para utilizar Hibernate 4, algumas atualizações são gerais e válidas independente da versão do Hibernate sendo usada pelo aplicativo no momento. Para as demais atualizações, você precisa estabelecer qual versão o aplicativo está usando.