45 lines
1.8 KiB
Java
45 lines
1.8 KiB
Java
package com.baeldung.themes.config;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
|
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
|
import org.springframework.orm.jpa.JpaTransactionManager;
|
|
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
|
import org.springframework.transaction.PlatformTransactionManager;
|
|
|
|
import javax.persistence.EntityManagerFactory;
|
|
import javax.sql.DataSource;
|
|
|
|
@EnableJpaRepositories(basePackages = "com.baeldung")
|
|
public class DataSourceConfig {
|
|
@Bean
|
|
public DataSource dataSource() {
|
|
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
|
|
return builder.setType(EmbeddedDatabaseType.HSQL)
|
|
.addScripts("db/sql/create-db.sql", "db/sql/insert-data.sql")
|
|
.build();
|
|
}
|
|
|
|
@Bean
|
|
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
|
|
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
|
|
em.setDataSource(dataSource);
|
|
em.setPackagesToScan("com.baeldung.themes.domain");
|
|
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
|
|
return em;
|
|
}
|
|
|
|
@Bean
|
|
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
|
|
return new JpaTransactionManager(emf);
|
|
}
|
|
|
|
@Bean
|
|
public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
|
|
return new PersistenceExceptionTranslationPostProcessor();
|
|
}
|
|
}
|