To override the default settings just define a @Bean
of your own of type DataSource
.
See Section 24.1, “Configure a DataSource” in the
“Spring Boot features” section and the
DataSourceAutoConfiguration
class for more details.
Spring Data can create implementations for you of @Repository
interfaces of various
flavours. Spring Boot will handle all of that for you as long as those @Repositories
are included in the same package (or a sub-package) of your @EnableAutoConfiguration
class.
For many applications all you will need is to put the right Spring Data dependencies on
your classpath (there is a spring-boot-starter-data-jpa
for JPA and a
spring-boot-starter-data-mongodb
for Mongodb), create some repository interfaces to handle your
@Entity
objects. Examples are in the JPA sample
or the Mongodb sample.
Spring Boot tries to guess the location of your @Repository
definitions, based on the
@EnableAutoConfiguration
it finds. To get more control, use the @EnableJpaRepositories
annotation (from Spring Data JPA).
Spring Boot tries to guess the location of your @Entity
definitions, based on the
@EnableAutoConfiguration
it finds. To get more control, you can use the @EntityScan
annotation, e.g.
@Configuration @EnableAutoConfiguration @EntityScan(basePackageClasses=City.class) public class Application { //... }
Spring Data JPA already provides some vendor-independent configuration options (e.g. for SQL logging) and Spring Boot exposes those, and a few more for hibernate as external configuration properties. The most common options to set are:
spring.jpa.hibernate.ddl-auto: create-drop spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.database: H2 spring.jpa.show-sql: true
(Because of relaxed data binding hyphens or underscores should work equally well as
property keys.) The ddl-auto
setting is a special case in that it has different
defaults depending on whether you are using an embedded database (create-drop
) or not
(none
). In addition all properties in spring.jpa.properties.*
are passed through as
normal JPA properties (with the prefix stripped) when the local EntityManagerFactory
is
created.
See HibernateJpaAutoConfiguration
and JpaBaseConfiguration
for more details.
Spring doesn’t require the use of XML to configure the JPA provider, and Spring Boot
assumes you want to take advantage of that feature. If you prefer to use persistence.xml
then you need to define your own @Bean
of type LocalEntityManagerFactoryBean
, and set
the persistence unit name there.
See
JpaBaseConfiguration
for the default settings.