zoukankan      html  css  js  c++  java
  • springboot数据库配置类(druid)

    package com.jy..config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    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 org.springframework.transaction.annotation.EnableTransactionManagement;
    
    import javax.sql.DataSource;
    import java.sql.SQLException;
    import java.util.Properties;
    
    @Configuration
    @EnableTransactionManagement
    public class DataSourceConfig {
    
        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}")
        private String driver;
        @Value("${spring.datasource.url}")
        private String url;
        @Value("${spring.datasource.username}")
        private String username;
        @Value("${spring.datasource.password}")
        private String password;
        @Value("${spring.jpa.properties.hibernate.dialect}")
        private String dialect;
        @Value("${spring.jpa.hibernate.ddl-auto}")
        private String hbm2ddlAuto;
        @Value("${spring.jpa.show-sql}")
        private Boolean showSql;
    
        @Value("${spring.datasource.initialSize}")
        private int initialSize;
        @Value("${spring.datasource.minIdle}")
        private int minIdle;
        @Value("${spring.datasource.maxActive}")
        private int maxActive;
        @Value("${spring.datasource.maxWait}")
        private int maxWait;
        @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
        private int timeBetweenEvictionRunsMillis;
        @Value("${spring.datasource.minEvictableIdleTimeMillis}")
        private long minEvictableIdleTimeMillis;
        @Value("${spring.datasource.validationQuery}")
        private String validationQuery;
        @Value("${spring.datasource.testWhileIdle}")
        private boolean testWhileIdle;
        @Value("${spring.datasource.testOnBorrow}")
        private boolean testOnBorrow;
        @Value("${spring.datasource.testOnReturn}")
        private boolean testOnReturn;
        @Value("${spring.datasource.filters}")
        private String filters;
        @Value("${spring.datasource.connectionProperties}")
        private String connectionProperties;
    
        @Bean(name = "dataSource")
        public DataSource configureDataSource() {
            DruidDataSource ds = new DruidDataSource();
            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);
            return ds;
        }
    
    
        @Bean
        public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
            LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
            entityManagerFactoryBean.setDataSource(configureDataSource());
            //实体存放的package位置
            entityManagerFactoryBean.setPackagesToScan("com.jy.entity");
            entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
    
            Properties jpaProperties = new Properties();
            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);
    
            return entityManagerFactoryBean;
        }
    
        @Bean(name = "transactionManager")
        public PlatformTransactionManager annotationDrivenTransactionManager() {
            return new JpaTransactionManager();
        }
    }
    人生没有彩排,每天都是现场直播!
  • 相关阅读:
    性能测试——Jmeter基本用法概述
    Postman-newman基础用法
    数据库基础总结
    性能测试概述
    pytest+allure生成测试报告
    CSS入门基础
    HTML基础知识总结
    robotframework:无法导入资源Not a valid file or directory to import
    robotframework及官方编辑器RIDE的安装与配置
    常用排序算法
  • 原文地址:https://www.cnblogs.com/northern-light/p/10498394.html
Copyright © 2011-2022 走看看