From 8a49637a14f8344420ab23268bcbd831ff99a562 Mon Sep 17 00:00:00 2001 From: Abhi Bavishi Date: Fri, 12 Jun 2015 20:10:43 +0530 Subject: [PATCH] Added configuration class for the application --- .../com/baeldung/multitenancy/MTConfig.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 spring-all/src/main/java/org/baeldung/multi-tenancy/java/com/baeldung/multitenancy/MTConfig.java diff --git a/spring-all/src/main/java/org/baeldung/multi-tenancy/java/com/baeldung/multitenancy/MTConfig.java b/spring-all/src/main/java/org/baeldung/multi-tenancy/java/com/baeldung/multitenancy/MTConfig.java new file mode 100644 index 0000000000..0d966acc4d --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/multi-tenancy/java/com/baeldung/multitenancy/MTConfig.java @@ -0,0 +1,62 @@ +package com.baeldung.multitenancy; + +import org.hibernate.tool.hbm2ddl.SchemaExport; +import com.baeldung.multitenancy.implementation; +import javax.sql.DataSource; +import java.io.IOException; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Map; + + + +@Configuration +public class MTConfig { + + @Bean + public SessionFactoryBean sessionFactory(Map dataSourceMap, DataSource dataSource){ + + SessionFactoryBean sf = new SessionFactoryBean(); + sf.setDataSourceMap(dataSourceMap); + sf.setDataSource(dataSource); + + try{ + Properties prop = new Properties(); + prop.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); + prop.setProperty("hibernate.show_sql", "true"); + prop.setProperty("hibernate.multiTenancy", "DATABASE"); + prop.setProperty("hibernate.tenant_identifier_resolver", "currentSessionTenantIdentifierResolver"); + prop.setProperty("hibernate.multi_tenant_connection_provider", "simpleMultiTenantConnectionProvider"); + + sf = new AnnotationConfiguration().setProperties(prop).configure().buildSessionFactory(); + return sf; + + } catch (Throwable ex) { + System.err.println("Failed to load the SessionFactory: " + ex); + throw new ExceptionInInitializerError(ex); + } + + } + + @Bean(name = "currentSessionTenantIdentifierResolver") + @Scope("request", proxyMode = ScopedProxyMode.INTERFACES) + public CurrentSessionTenantIdentifierResolver currentSessionTenantIdentifierResolver(){ + + CurrentSessionTenantIdentifierResolver cstir = new CurrentSessionTenantIdentifierResolver(); + return cstir; + + } + + @Bean(name = "simpleMultiTenantConnectionProvider") + public SimpleMultiTenantConnectionProvider simpleMultiTenantConnectionProvider(Map dataSourceMap){ + + SimpleMultiTenantConnectionProvider smtcp = new SimpleMultiTenantConnectionProvider(); + smtcp.setDataSourceMap(dataSourceMap); + return cstir; + + } + + + + +}