com.yuweix.tripod.data.springboot.HibernateConf Maven / Gradle / Ivy
package com.yuweix.tripod.data.springboot;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.Resource;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.util.Properties;
/**
* @author yuwei
*/
@EnableTransactionManagement(proxyTargetClass = true)
public class HibernateConf {
@ConditionalOnMissingBean(name = "mappingLocations")
@Bean(name = "mappingLocations")
public Resource[] mappingLocations() {
return new Resource[] {};
}
@ConditionalOnMissingBean(name = "packagesToScan")
@Bean(name = "packagesToScan")
public String[] packagesToScan(@Value("${tripod.hibernate.scan.packages:}") String packages) {
if (packages == null || "".equals(packages)) {
return new String[0];
}
return packages.split(",");
}
@Bean(name = "sessionFactory")
public LocalSessionFactoryBean localSessionFactoryBean(@Qualifier("dataSource") DataSource dataSource
, @Qualifier("mappingLocations") Resource[] mappingLocations
, @Qualifier("packagesToScan") String[] packagesToScan) {
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
properties.setProperty("hibernate.current_session_context_class", "org.springframework.orm.hibernate5.SpringSessionContext");
properties.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.EhCacheRegionFactory");
properties.setProperty("hibernate.cache.use_query_cache", "true");
properties.setProperty("hibernate.cache.use_second_level_cache", "false");
properties.setProperty("hibernate.show_sql", "false");
properties.setProperty("hibernate.jdbc.batch_size", "20");
properties.setProperty("hibernate.connection.release_mode", "auto");
sessionFactoryBean.setHibernateProperties(properties);
sessionFactoryBean.setMappingLocations(mappingLocations);
sessionFactoryBean.setPackagesToScan(packagesToScan);
return sessionFactoryBean;
}
@Bean(name = "transactionManager")
public HibernateTransactionManager transactionManager(@Qualifier("sessionFactory") SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory);
return transactionManager;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy