Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package cz.swi2.mendeluis.dataaccesslayer.core; import org.hibernate.jpa.HibernatePersistenceProvider; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver; import org.springframework.instrument.classloading.LoadTimeWeaver; 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 org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; //import org.slf4j.impl.StaticLoggerBinder; import javax.sql.DataSource; import org.apache.log4j.BasicConfigurator; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * */ @Configuration @EnableTransactionManagement @EnableJpaRepositories @ImportResource("classpath:/appContext.xml") public class DatabaseConfig { @Bean public JpaTransactionManager transactionManager() { BasicConfigurator.configure(); return new JpaTransactionManager(entityManagerFactory().getObject()); } @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean jpaFactoryBean = new LocalContainerEntityManagerFactoryBean(); jpaFactoryBean.setDataSource(db()); jpaFactoryBean.setJpaVendorAdapter(jpaVendorAdapter()); jpaFactoryBean.setLoadTimeWeaver(instrumentationLoadTimeWeaver()); jpaFactoryBean.setPersistenceXmlLocation("classpath:META-INF/persistence.xml"); jpaFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class); jpaFactoryBean.setPackagesToScan("cz.swi2.mendeluis.dataaccesslayer.*"); return jpaFactoryBean; } @Bean public JpaVendorAdapter jpaVendorAdapter() { HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter(); hibernateJpaVendorAdapter.setShowSql(true); hibernateJpaVendorAdapter.setGenerateDdl(true); hibernateJpaVendorAdapter.setDatabase(Database.MYSQL); return hibernateJpaVendorAdapter; } @Bean public LocalValidatorFactoryBean localValidatorFactoryBean() { return new LocalValidatorFactoryBean(); } @Bean public LoadTimeWeaver instrumentationLoadTimeWeaver() { return new InstrumentationLoadTimeWeaver(); } @Bean public DataSource db() { DriverManagerDataSource builder = new DriverManagerDataSource(); builder.setDriverClassName("com.mysql.jdbc.Driver"); builder.setUrl("jdbc:mysql://127.0.0.1:3306/mendeluis?zeroDateTimeBehavior=convertToNull"); builder.setUsername("mendeluis"); builder.setPassword("mendeluis"); return builder; } }