Skip to content

Instantly share code, notes, and snippets.

@lindabjalla
Last active February 13, 2016 20:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lindabjalla/e73753d8b1a43c0b4b0c to your computer and use it in GitHub Desktop.
Save lindabjalla/e73753d8b1a43c0b4b0c to your computer and use it in GitHub Desktop.
AppConfig
package se.grouprich.projectmanagement.config;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.auditing.DateTimeProvider;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import se.grouprich.projectmanagement.model.auditing.AuditingDateTimeProvider;
import se.grouprich.projectmanagement.model.auditing.UsernameAuditorAware;
@Configuration
@EnableJpaRepositories("se.grouprich.projectmanagement.repository")
@EnableTransactionManagement
@EnableJpaAuditing(auditorAwareRef = "auditorProvider", dateTimeProviderRef = "dateTimeProvider")
public class AppConfig
{
@Bean
public DataSource dataSource()
{
HikariConfig config = new HikariConfig();
config.setDriverClassName("com.mysql.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://localhost:3306/ProjectManagement_Database");
config.setUsername("root");
config.setPassword("root");
return new HikariDataSource(config);
}
@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory factory)
{
return new JpaTransactionManager(factory);
}
@Bean
public JpaVendorAdapter jpaVendorAdapter()
{
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
adapter.setDatabase(Database.MYSQL);
adapter.setGenerateDdl(true);
return adapter;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory()
{
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setDataSource(dataSource());
factory.setJpaVendorAdapter(jpaVendorAdapter());
factory.setPackagesToScan("se.grouprich.projectmanagement.model");
return factory;
}
@Bean
DateTimeProvider dateTimeProvider()
{
return new AuditingDateTimeProvider();
}
@Bean
AuditorAware<String> auditorProvider()
{
return new UsernameAuditorAware();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment