Spring 休眠多个数据库配置文件
我有下面显示的数据库配置文件,该文件读取application.properties,其中包含连接到单个数据库的信息 我想添加另一个类似的配置文件,它允许我连接到另一个数据库,并使用它的会话工厂,就像我已经拥有的主数据库一样 我正在制作另一个类似的文件,从另一个应用程序属性文件读取。但是,我不知道如何连接它,以便在每个实体类中都有多个会话工厂Spring 休眠多个数据库配置文件,spring,hibernate,sessionfactory,Spring,Hibernate,Sessionfactory,我有下面显示的数据库配置文件,该文件读取application.properties,其中包含连接到单个数据库的信息 我想添加另一个类似的配置文件,它允许我连接到另一个数据库,并使用它的会话工厂,就像我已经拥有的主数据库一样 我正在制作另一个类似的文件,从另一个应用程序属性文件读取。但是,我不知道如何连接它,以便在每个实体类中都有多个会话工厂 import java.util.Properties; import javax.sql.DataSource; import org.spring
import java.util.Properties;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
public class DatabaseConfig {
@Value("${db.driver}")
private String DB_DRIVER;
@Value("${db.password}")
private String DB_PASSWORD;
@Value("${db.url}")
private String DB_URL;
@Value("${db.username}")
private String DB_USERNAME;
@Value("${hibernate.dialect}")
private String HIBERNATE_DIALECT;
@Value("${hibernate.show_sql}")
private String HIBERNATE_SHOW_SQL;
@Value("${hibernate.hbm2ddl.auto}")
private String HIBERNATE_HBM2DDL_AUTO;
@Value("${entitymanager.packagesToScan}")
private String ENTITYMANAGER_PACKAGES_TO_SCAN;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(DB_DRIVER);
dataSource.setUrl(DB_URL);
dataSource.setUsername(DB_USERNAME);
dataSource.setPassword(DB_PASSWORD);
return dataSource;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource());
sessionFactoryBean.setPackagesToScan(ENTITYMANAGER_PACKAGES_TO_SCAN);
Properties hibernateProperties = new Properties();
hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO);
sessionFactoryBean.setHibernateProperties(hibernateProperties);
return sessionFactoryBean;
}
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager =
new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
} // class DatabaseConfig
在通用dao中使用会话工厂。我想要另一个可以连接到另一个数据源的会话工厂
@Repository("baseDao")
@Transactional
public class BaseDaoImpl<T extends Serializable> implements BaseDao<T> {
@Autowired
private SessionFactory sessionFactory;
private Session getSession() {
return sessionFactory.getCurrentSession();
}
...
@Repository(“baseDao”)
@交易的
公共类BaseDaoImpl实现BaseDao{
@自动连线
私人会话工厂会话工厂;
私有会话getSession(){
返回sessionFactory.getCurrentSession();
}
...
继续使用不同的配置定义第二个会话工厂
并在BaseDao中自动连接它,检查限定符注释。此外,您还必须考虑在运行时如何决定每次应使用哪个工厂。您好,所以我有一个相同的文件,具有不同的propertysource。我感到困惑至于如何自动连接它。我为第二个架构中的表创建了一个新实体。但是当我运行它时,无法从第二个数据库中找到表。