DATAJPA-993 - Improved example of infrastructure setup in reference documentation.

Previously EntityManagerFactory was created manually which resulted in LocalContainerEntityManagerFactoryBean not being exposed to
ApplicationContext. The latter is an important bean since it enables
exception translation.

Original pull request: #180.
This commit is contained in:
Stanislav Bashkyrtsev
2016-09-03 20:00:33 +03:00
committed by Oliver Gierke
parent 1477c18994
commit 2fbdd53493

View File

@@ -65,7 +65,7 @@ class ApplicationConfig {
}
@Bean
public EntityManagerFactory entityManagerFactory() {
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
@@ -74,9 +74,7 @@ class ApplicationConfig {
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.acme.domain");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory.getObject();
return factory;
}
@Bean
@@ -89,6 +87,7 @@ class ApplicationConfig {
}
----
====
NB: It's important to create `LocalContainerEntityManagerFactoryBean` and not `EntityManagerFactory` directly since the former also participates in exception translation mechanisms besides simply creating `EntityManagerFactory`.
The just shown configuration class sets up an embedded HSQL database using the `EmbeddedDatabaseBuilder` API of spring-jdbc. We then set up a `EntityManagerFactory` and use Hibernate as sample persistence provider. The last infrastructure component declared here is the `JpaTransactionManager`. We finally activate Spring Data JPA repositories using the `@EnableJpaRepositories` annotation which essentially carries the same attributes as the XML namespace does. If no base package is configured it will use the one the configuration class resides in.