Use Hibernate 4.3.x com JTA no Glassfish 4

Isso permitirá que você atualize para JPA 2.1 usando a nova estrutura Hibernate no Java EE 7 e mantenha suas fontes de dados JTA com um EntityManager JPA padrão.

Primeiro você vai querer baixar o Hibernate 4.3.x de http://hibernate.org/orm/downloads/ e colocar todos os jars necessários no zip em {Glassfish4 direcory}/glassfish/lib
Eu também instalei jboss-logging-3.1.x.GA.jarna {Glassfish4 direcory}/glassfish/lib/endorsedpasta para permitir o registro do Hibernate.

Eu recomendo usar o Maven para o gerenciamento de dependências do seu projeto, pois o Hibernate tem uma grande árvore de dependências. Adicione a seguinte dependência apom.xml

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.0.Final</version>
</dependency>

No Hibenate 3.6 e JPA 2.0, seu persistence.xmlarquivo ficaria assim:

<persistence version="2.0"
>="http://java.sun.com/xml/ns/persistence"
>="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="myunitname" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
...

</persistence-unit>
</persistence>

Agora com Hibernate 4.3, você deve atualizar sua versão de persistência e sua classe de provedor:

<persistence version="2.1" 
>="http://>
>="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://>>
<persistence-unit name="myunitname" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>jdbc/my-data-source</jta-data-source>
<properties>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" />
...

</properties>
</persistence-unit>
</persistence>

Observe a adição da propriedade hibernate.transaction.jta.platformIsso é necessário e o valor mudará dependendo do seu container. Para Glassfish é org.hibernate.service.jta.platform.internal.SunOneJtaPlatform. Veja aqui outras implementações de plataforma: http://docs.jboss.org/hibernate/core/4.0/javadocs/org/hibernate/service/jta/platform/internal/package-summary.html