Commit Graph
28 Commits
Author SHA1 Message Date
Chris Beams 9e8259198f Introduce (Annotation)SessionFactoryBuilder types
Large refactoring of existing *SessionFactoryBean hierarchy designed to
support configuration of Hibernate SessionFactory objects within
@Configuration class @Bean methods without forcing use of a
FactoryBean type, which is generally discouraged due to awkwardness
of programming model and lifecycle issues.  Refactored and new types
include:

    * Removal of AbstractSessionFactoryBean, replacing it with
      SessionFactoryBeanSupport abstract base class

    * Introduction of SessionFactoryBuilder and
      AnnotationSessionFactoryBuilder types, both direct subclasses of
      SessionFactoryBuilderSupport. These types are intended for direct
      use within @Bean methods. They expose method-chainable set*
      methods allowing for concise and convenient use. See JavaDoc
      on both types for usage examples.

    * LocalSessionFactoryBean and AnnotationSessionFactoryBean types are
      now subclasses, respectively, of the *Builder types above.

LSFB and ASFB backward-compatibility has been maintained almost
entirely. The one exception is that there is no longer a protected
convertHibernateAccessException() method available in the hierarchy.
This method was not likely often used anyway and has been replaced
by the new (and public) setPersistenceExceptionTranslator() which
accepts instances of type HibernateExceptionTranslator as introduced in
SPR-8076.

LSFB and ASFB setter method signatures have changed. They no longer
return void in standard JavaBeans style but rather, and due to extending
the *Builder types above, return the 'this' reference. This posed a
problem because the Spring container has to date been unable to detect
and provide dependency injection against non-void returning setter
methods. This limitation was due to the way that the default JavaBeans
Introspector class and its getBeanInfo() method works, and prompted the
introduction and intergration of ExtendedBeanInfo, already completed in
SPR-8079. So have no concern if you notice this signature change - it
all works.

Certain deprecations have been made:

    * All LSFB/ASFB methods related to Hibernate's CacheProvider SPI,
      reflecting its deprecation in Hibernate 3.3 in favor of the new
      RegionFactory SPI. Note these methods have been preserved only
      on the FactoryBean types. The new *SessionFactoryBuilder
      supertypes do not expose CacheProvider services at all.

    * All protected LSFB/ASFB methods that accept a Hibernate
      Configuration parameter, such as newSessionFactory(Configuration),
      postProcessMappings(Configuration) and
      postProcessConfiguration(Configuation), in favor of no-arg methods
      with the same names. Due to the nature of the hierarchy
      refactoring mentioned above, the Configuration instance is always
      available when these methods are called, thus no need to pass it
      in as a parameter.

In the process, our approach to automatic detection of Hibernate dialect
has been improved (it was in fact broken before). Thanks to James
Roper for his suggestion in SPR-7936 as to how to fix this.

See HibernateSessionFactoryConfigurationTests as a starting point for
understanding the new builder-style approach to SessionFactory creation.
Note especially use of the SessionFactoryBuilder#doWithConfiguration
method which allows for direct programmatic configuration of the Native
Hibernate (Annotation)Configuration API.

As a final note, AnnotationConfiguration has been deprecated in
Hibernate 3.6, and great pains have been taken to ensure that users
of any supported Hibernate version (3.2 -> 3.6) will never need to
(a) cast from Configuration to AnnotationConfiguration or (b)
experience deprecation warnings due to being forced to use the
AnnotationConfiguration API. Explore the JavaDoc around the
doWithConfiguration() method and HibernateConfigurationCallback type
for complete details.

Issue: SPR-8066, SPR-7936, SPR-8076, SPR-8098

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4147 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-31 12:29:12 +00:00
Sam Brannen fe5a764138 [SPR-8092] cleaning up ignored and broken ORM tests; suppressing warnings; fixed Eclipse classpath for tests.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4122 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 18:16:45 +00:00
Sam Brannen da384be170 Polishing and fixed broken support for @IfProfileValue in AbstractJpaTests (even though it's deprecated).
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4118 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 17:23:48 +00:00
Juergen Hoeller f85bad07d6 LocalSessionFactoryBean's "entityCacheStrategies" works with region names on Hibernate 3.6 as well
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3664 50f2f4bb-b051-0410-bef5-90022cba6387
2010-09-08 22:45:58 +00:00
Juergen Hoeller 644817b47a avoid EntityManager close() exception through isOpen() check (SPR-7215)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3402 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-08 11:06:02 +00:00
Juergen Hoeller 8fad7f1520 avoid EntityManager close() exception through isOpen() check (SPR-7215)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3401 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-08 10:21:05 +00:00
Juergen Hoeller 6a9a595cd9 compatibility with Hibernate 3.5 final
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3217 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-01 11:37:35 +00:00
Juergen Hoeller 37a23acbe2 SharedEntityManagerCreator's EntityManager proxies are fully serializable now (SPR-6684)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2890 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-01 14:48:18 +00:00
Juergen Hoeller a9478f0d5d fixed support for JPA 2.0 persistence schema (SPR-6711)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2834 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-18 19:26:52 +00:00
David Syer 4a7cb34bf0 SPR-5327: tidy up Maven dependencies (keeping commons-logging)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2549 50f2f4bb-b051-0410-bef5-90022cba6387
2009-11-30 12:57:11 +00:00
Juergen Hoeller 39bf8dc02e added chaining-capable "add" method to MutablePropertyValues
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2462 50f2f4bb-b051-0410-bef5-90022cba6387
2009-11-19 22:30:35 +00:00
Juergen Hoeller e5bccc43d3 added support for Hibernate 3.3 RegionFactory cache SPI to LocalSessionFactoryBean (SPR-6387)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2454 50f2f4bb-b051-0410-bef5-90022cba6387
2009-11-19 15:39:11 +00:00
Juergen Hoeller 5ce2816dc9 fixed PersistenceInjectionTests
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2162 50f2f4bb-b051-0410-bef5-90022cba6387
2009-10-20 18:30:55 +00:00
Mark Pollack 0d92d4afb3 SPR-5619 - (OpenSessionInViewTests, ClassUtilTests fixed)
Update org.sf.web/.classpath to refer to tiles 2.1.2

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1505 50f2f4bb-b051-0410-bef5-90022cba6387
2009-07-10 03:30:12 +00:00
Sam Brannen 01023ec911 Updated regarding generics; fixed typos.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1245 50f2f4bb-b051-0410-bef5-90022cba6387
2009-05-25 09:04:05 +00:00
Juergen Hoeller 8af560b4f4 added "flush()" method to TransactionStatus and TransactionSynchronization interfaces; test context manager automatically flushes transactions before rolling back; general polishing of transaction management code
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@655 50f2f4bb-b051-0410-bef5-90022cba6387
2009-02-19 00:24:05 +00:00
Juergen Hoeller 07a691a575 bridge method resolution works with Hibernate-generated CGLIB proxies as well (SPR-5414)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@640 50f2f4bb-b051-0410-bef5-90022cba6387
2009-02-16 01:35:35 +00:00
Juergen Hoeller ec1653aead generified operations interfaces; update to JDO 2.1; preparation for JPA 2.0
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@584 50f2f4bb-b051-0410-bef5-90022cba6387
2009-01-25 23:20:41 +00:00
Chris Beams e6972a8bd8 re-adding mock.jndi.* artifacts to .orm test codebase eliminated after moving away from svn:externals
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@474 50f2f4bb-b051-0410-bef5-90022cba6387
2008-12-18 22:30:35 +00:00
Chris Beams 2796c55974 Whitespace polishing: leading spaces->tabs; updated eclipse configuration to default to leading tabs for all bundles
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@464 50f2f4bb-b051-0410-bef5-90022cba6387
2008-12-18 14:50:25 +00:00
Chris Beams 8ece02fe53 moving unit tests from .testsuite -> .orm
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@445 50f2f4bb-b051-0410-bef5-90022cba6387
2008-12-17 05:33:45 +00:00
Juergen Hoeller a5253bec7f EL container integration; support for contextual objects; removal of deprecated Spring 2.0 functionality; Java 5 code style
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@305 50f2f4bb-b051-0410-bef5-90022cba6387
2008-11-20 02:10:53 +00:00
Arjen Poutsma 18fa76a632 Moved tests from testsuite to orm
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@218 50f2f4bb-b051-0410-bef5-90022cba6387
2008-10-30 16:55:52 +00:00
Arjen Poutsma b95cab6240 Moved tests from testsuite to orm
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@217 50f2f4bb-b051-0410-bef5-90022cba6387
2008-10-30 16:55:08 +00:00
Arjen Poutsma bc3e470574 Moved tests from testsuite to orm
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@213 50f2f4bb-b051-0410-bef5-90022cba6387
2008-10-30 16:48:56 +00:00
Arjen Poutsma 5dd9e5a56c Moved tests from testsuite to orm
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@212 50f2f4bb-b051-0410-bef5-90022cba6387
2008-10-30 16:46:52 +00:00
Arjen Poutsma 779bec401f Moved tests from testsuite to orm
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@211 50f2f4bb-b051-0410-bef5-90022cba6387
2008-10-30 16:42:34 +00:00
Arjen Poutsma 78aba9da30 Initial import of ORM
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@124 50f2f4bb-b051-0410-bef5-90022cba6387
2008-10-24 09:06:30 +00:00