packagecom.jy..config;importcom.alibaba.druid.pool.DruidDataSource;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.orm.jpa.JpaTransactionManager;importorg.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;importorg.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;importorg.springframework.transaction.PlatformTransactionManager;importorg.springframework.transaction.annotation.EnableTransactionManagement;importjavax.sql.DataSource;importjava.sql.SQLException;importjava.util.Properties;
@Configuration
@EnableTransactionManagementpublic classDataSourceConfig {private static final String HIBERNATE_DIALECT = "hibernate.dialect";private static final String HIBERNATE_SHOW_SQL = "hibernate.show.sql";private static final String HIBERNATE_DDL_AUTO = "hibernate.ddl-auto";private final static Logger log = LoggerFactory.getLogger(DataSourceConfig.class);
@Value("${spring.datasource.driverClassName}")privateString driver;
@Value("${spring.datasource.url}")privateString url;
@Value("${spring.datasource.username}")privateString username;
@Value("${spring.datasource.password}")privateString password;
@Value("${spring.jpa.properties.hibernate.dialect}")privateString dialect;
@Value("${spring.jpa.hibernate.ddl-auto}")privateString hbm2ddlAuto;
@Value("${spring.jpa.show-sql}")privateBoolean showSql;
@Value("${spring.datasource.initialSize}")private intinitialSize;
@Value("${spring.datasource.minIdle}")private intminIdle;
@Value("${spring.datasource.maxActive}")private intmaxActive;
@Value("${spring.datasource.maxWait}")private intmaxWait;
@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")private inttimeBetweenEvictionRunsMillis;
@Value("${spring.datasource.minEvictableIdleTimeMillis}")private longminEvictableIdleTimeMillis;
@Value("${spring.datasource.validationQuery}")privateString validationQuery;
@Value("${spring.datasource.testWhileIdle}")private booleantestWhileIdle;
@Value("${spring.datasource.testOnBorrow}")private booleantestOnBorrow;
@Value("${spring.datasource.testOnReturn}")private booleantestOnReturn;
@Value("${spring.datasource.filters}")privateString filters;
@Value("${spring.datasource.connectionProperties}")privateString connectionProperties;
@Bean(name= "dataSource")publicDataSource configureDataSource() {
DruidDataSource ds= newDruidDataSource();
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
ds.setInitialSize(initialSize);
ds.setMinIdle(minIdle);
ds.setMaxActive(maxActive);
ds.setMaxWait(maxWait);
ds.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
ds.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
ds.setValidationQuery(validationQuery);
ds.setTestWhileIdle(testWhileIdle);
ds.setTestOnBorrow(testOnBorrow);
ds.setTestOnReturn(testOnReturn);
ds.setPoolPreparedStatements(false);try{
ds.setFilters(filters);
}catch(SQLException e){
log.error("datasource Initialization produce error..");
}
ds.setConnectionProperties("druid.stat.slowSqlMillis=3000");
ds.setRemoveAbandoned(true);
ds.setRemoveAbandonedTimeout(1800);
ds.setLogAbandoned(true);returnds;
}
@BeanpublicLocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean= newLocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(configureDataSource());//实体存放的package位置
entityManagerFactoryBean.setPackagesToScan("com.jy.entity");
entityManagerFactoryBean.setJpaVendorAdapter(newHibernateJpaVendorAdapter());
Properties jpaProperties= newProperties();
jpaProperties.put(HIBERNATE_DIALECT, dialect);
jpaProperties.put(HIBERNATE_DDL_AUTO, hbm2ddlAuto);
jpaProperties.put(HIBERNATE_SHOW_SQL, showSql);
jpaProperties.put("use_query_cache", "true");
jpaProperties.put("use_second_level_cache", "false");
jpaProperties.put("enable_lazy_load_no_trans", "true");
entityManagerFactoryBean.setJpaProperties(jpaProperties);returnentityManagerFactoryBean;
}
@Bean(name= "transactionManager")publicPlatformTransactionManager annotationDrivenTransactionManager() {return newJpaTransactionManager();
}
}