Hibernate, spring, JPS & isolation - custom isolation not supported

This implementation is not account for the clean up stuff, I have implemented a similar solution but that accounts for the clean up as well. That solution can be found here: http://shahzad-mughal.blogspot.com/2012/04/spring-jpa-hibernate-support-for-custom.html


No custom isolation levels are supported by JPA. You can extend the HibernateJpaDialect class and override connection-related methods so that you can set custom isolation levels on the Connection

Here's something that I've written, but have not tested yet:

public class HibernateExtendedJpaDialect extends HibernateJpaDialect {

    @Override
    public Object beginTransaction(EntityManager entityManager,
            TransactionDefinition definition) throws PersistenceException,
            SQLException, TransactionException {

        Session session = (Session) entityManager.getDelegate();
        DataSourceUtils.prepareConnectionForTransaction(session.connection(), definition);

        entityManager.getTransaction().begin();

        return prepareTransaction(entityManager, definition.isReadOnly(), definition.getName());
    }

}

And you define this as a property of your EntityManagerFactory:

<property name="jpaDialect">
    <bean class="com.company.util.HibernateExtendedJpaDialect" />
</property>