mirror of https://github.com/bvn13/VoidForum.git
105 lines
4.0 KiB
Java
105 lines
4.0 KiB
Java
package ru.bvn13.voidforum;
|
|
|
|
import com.zaxxer.hikari.HikariConfig;
|
|
import com.zaxxer.hikari.HikariDataSource;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.jpa.HibernateEntityManagerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.ComponentScan;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
import org.springframework.orm.jpa.JpaTransactionManager;
|
|
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
import org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean;
|
|
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
|
import org.springframework.transaction.PlatformTransactionManager;
|
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
|
|
|
|
import javax.persistence.EntityManager;
|
|
import javax.persistence.EntityManagerFactory;
|
|
import javax.sql.DataSource;
|
|
import java.util.Properties;
|
|
|
|
/**
|
|
* @author bvn13 <mail4bvn@gmail.com>
|
|
*/
|
|
|
|
@Configuration
|
|
@EnableTransactionManagement
|
|
@EnableJpaRepositories(basePackageClasses = Application.class)
|
|
class JpaConfig implements TransactionManagementConfigurer {
|
|
|
|
@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.hibernate.dialect}")
|
|
private String dialect;
|
|
@Value("${spring.hibernate.hbm2ddl.auto}")
|
|
private String hbm2ddlAuto;
|
|
@Value("${spring.hibernate.show_sql}")
|
|
private Boolean showSql;
|
|
|
|
@Bean
|
|
public DataSource configureDataSource() {
|
|
HikariConfig config = new HikariConfig();
|
|
config.setDriverClassName(driver);
|
|
config.setJdbcUrl(url);
|
|
config.setUsername(username);
|
|
config.setPassword(password);
|
|
|
|
config.addDataSourceProperty("useUnicode", "true");
|
|
config.addDataSourceProperty("characterEncoding", "utf8");
|
|
config.addDataSourceProperty("cachePrepStmts", "true");
|
|
config.addDataSourceProperty("prepStmtCacheSize", "250");
|
|
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
|
|
config.addDataSourceProperty("useServerPrepStmts", "true");
|
|
|
|
return new HikariDataSource(config);
|
|
}
|
|
|
|
@Bean
|
|
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
|
|
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
|
|
entityManagerFactoryBean.setDataSource(configureDataSource());
|
|
entityManagerFactoryBean.setPackagesToScan("ru.bvn13.voidforum");
|
|
entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
|
|
|
|
Properties jpaProperties = new Properties();
|
|
jpaProperties.put(org.hibernate.cfg.Environment.DIALECT, dialect);
|
|
jpaProperties.put(org.hibernate.cfg.Environment.HBM2DDL_AUTO, hbm2ddlAuto);
|
|
jpaProperties.put(org.hibernate.cfg.Environment.SHOW_SQL, showSql);
|
|
entityManagerFactoryBean.setJpaProperties(jpaProperties);
|
|
|
|
return entityManagerFactoryBean;
|
|
}
|
|
|
|
@Bean(name = "transactionManager")
|
|
public PlatformTransactionManager annotationDrivenTransactionManager() {
|
|
return new JpaTransactionManager();
|
|
}
|
|
|
|
/*
|
|
|
|
@Autowired
|
|
private EntityManagerFactory entityManagerFactory;
|
|
|
|
@Bean
|
|
public SessionFactory getSessionFactory() {
|
|
if (entityManagerFactory.unwrap(SessionFactory.class) == null) {
|
|
throw new NullPointerException("factory is not a hibernate factory");
|
|
}
|
|
return entityManagerFactory.unwrap(SessionFactory.class);
|
|
}*/
|
|
|
|
|
|
}
|