diff --git a/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/support/OpenSessionInViewInterceptor.java b/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/support/OpenSessionInViewInterceptor.java index 3e744956092..001bf77627f 100644 --- a/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/support/OpenSessionInViewInterceptor.java +++ b/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/support/OpenSessionInViewInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import org.hibernate.FlushMode; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; + import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.orm.hibernate4.SessionFactoryUtils; @@ -77,23 +78,29 @@ public class OpenSessionInViewInterceptor implements AsyncWebRequestInterceptor private SessionFactory sessionFactory; + /** + * Set the Hibernate SessionFactory that should be used to create + * Hibernate Sessions. + */ public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } + /** + * Return the Hibernate SessionFactory that should be used to create + * Hibernate Sessions. + */ public SessionFactory getSessionFactory() { return this.sessionFactory; } /** - * Open a new Hibernate {@code Session} according to the settings of this - * {@code HibernateAccessor} and bind it to the thread via the + * Open a new Hibernate {@code Session} according and bind it to the thread via the * {@link org.springframework.transaction.support.TransactionSynchronizationManager}. */ @Override public void preHandle(WebRequest request) throws DataAccessException { - String participateAttributeName = getParticipateAttributeName(); WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request); diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate3/HibernateTransactionManager.java b/spring-orm/src/main/java/org/springframework/orm/hibernate3/HibernateTransactionManager.java index be7559ba283..5288e55772b 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate3/HibernateTransactionManager.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate3/HibernateTransactionManager.java @@ -17,7 +17,6 @@ package org.springframework.orm.hibernate3; import java.sql.Connection; - import javax.sql.DataSource; import org.hibernate.ConnectionReleaseMode; @@ -30,6 +29,7 @@ import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.exception.GenericJDBCException; import org.hibernate.impl.SessionImpl; + import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; @@ -110,7 +110,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager * support nested transactions! Hence, do not expect Hibernate access code to * semantically participate in a nested transaction. * - *
Requires Hibernate 3.6 or later, as of Spring 4.0. + *
Requires Hibernate 3.6.x, as of Spring 4.0. * * @author Juergen Hoeller * @since 1.2 diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate3/LocalSessionFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/hibernate3/LocalSessionFactoryBean.java index fb214690757..6218a285e0f 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate3/LocalSessionFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate3/LocalSessionFactoryBean.java @@ -88,7 +88,7 @@ import org.springframework.util.StringUtils; * {@link org.springframework.orm.hibernate3.support.OpenSessionInViewFilter} / * {@link org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor}. * - *
Requires Hibernate 3.6 or later, as of Spring 4.0. + *
Requires Hibernate 3.6.x, as of Spring 4.0. * Note that this factory will use "on_close" as default Hibernate connection * release mode, unless in the case of a "jtaTransactionManager" specified, * for the reason that this is appropriate for most Spring-based applications diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate3/SessionFactoryUtils.java b/spring-orm/src/main/java/org/springframework/orm/hibernate3/SessionFactoryUtils.java index 1bdad068836..320e155dc2f 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate3/SessionFactoryUtils.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate3/SessionFactoryUtils.java @@ -20,7 +20,6 @@ import java.util.HashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; - import javax.sql.DataSource; import javax.transaction.Status; import javax.transaction.Transaction; @@ -57,6 +56,7 @@ import org.hibernate.exception.DataException; import org.hibernate.exception.JDBCConnectionException; import org.hibernate.exception.LockAcquisitionException; import org.hibernate.exception.SQLGrammarException; + import org.springframework.core.NamedThreadLocal; import org.springframework.dao.CannotAcquireLockException; import org.springframework.dao.DataAccessException; @@ -91,7 +91,7 @@ import org.springframework.util.Assert; * and {@link HibernateTransactionManager}. Can also be used directly in * application code. * - *
Requires Hibernate 3.6 or later, as of Spring 4.0. + *
Requires Hibernate 3.6.x, as of Spring 4.0. * * @author Juergen Hoeller * @since 1.2 @@ -618,10 +618,12 @@ public abstract class SessionFactoryUtils { */ public static void applyTransactionTimeout(Criteria criteria, SessionFactory sessionFactory) { Assert.notNull(criteria, "No Criteria object specified"); - SessionHolder sessionHolder = - (SessionHolder) TransactionSynchronizationManager.getResource(sessionFactory); - if (sessionHolder != null && sessionHolder.hasTimeout()) { - criteria.setTimeout(sessionHolder.getTimeToLiveInSeconds()); + if (sessionFactory != null) { + SessionHolder sessionHolder = + (SessionHolder) TransactionSynchronizationManager.getResource(sessionFactory); + if (sessionHolder != null && sessionHolder.hasTimeout()) { + criteria.setTimeout(sessionHolder.getTimeToLiveInSeconds()); + } } } diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate3/annotation/AnnotationSessionFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/hibernate3/annotation/AnnotationSessionFactoryBean.java index cf2d60e0df1..909fe41e4e6 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate3/annotation/AnnotationSessionFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate3/annotation/AnnotationSessionFactoryBean.java @@ -43,10 +43,7 @@ import org.springframework.util.ClassUtils; /** * Subclass of Spring's standard LocalSessionFactoryBean for Hibernate, - * supporting JDK 1.5+ annotation metadata for mappings. - * - *
Note: As of Spring 4.0, this class requires Hibernate 3.6 or later, - * with the Java Persistence API present. + * supporting annotation metadata for mappings. * *
Example for an AnnotationSessionFactoryBean bean definition: * @@ -69,7 +66,7 @@ import org.springframework.util.ClassUtils; * <property name="packagesToScan" value="test.package"/> * </bean> * - *
Requires Hibernate 3.6 or later, as of Spring 4.0. + *
Requires Hibernate 3.6.x, as of Spring 4.0. * * @author Juergen Hoeller * @since 1.2.2