当前位置: 首页 > 面试题库 >

Spring-Hibernate使用多个数据源/数据库

乜烨霖
2023-03-14
问题内容

我正在使用Spring MVC 3和Hibernate的Web应用程序上工作

我想为我的Web应用程序使用2个数据源MySql和Oracle数据库,

但是每次运行它时,配置文件都会读取我的第一个数据库配置文件(MySql)并显示此错误Table 'db_prod.ksei_lookup_holiday' doesn't existdb.prod是我的第一个数据库文件(MySql),而KSEI_LOOKUP_HOLIDAY是我的第二个数据库文件(Oracle),

这是我的spring.xml

<tx:annotation-driven transaction-manager="transactionManager"/>
<tx:annotation-driven transaction-manager="transactionManagerSOAAPP"/>
<context:annotation-config />


<context:component-scan base-package="prod.support" />

<!-- Database MySql, Desktop -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/db_prod" />
    <property name="username" value="root" />
    <property name="password" value="shikamaru" />
</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"></property>
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
    <property name="packagesToScan" value="prod.support.model.splatter" />
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"
    p:sessionFactory-ref="sessionFactory">
</bean>

<!-- Database Oracle, Schema : SOAAPP -->

<bean id="dataSourceSOAAPP" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
    <property name="username" value="splatter" />
    <property name="password" value="shikamaru" />
</bean>

<bean id="sessionFactorySOAAPP"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"></property>
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
    <property name="packagesToScan" value="prod.support.model.soaapp" />
</bean>

<bean id="transactionManagerSOAAPP"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"
    p:sessionFactory-ref="sessionFactorySOAAPP">
</bean>

这是我的第一个数据库(MySql)的DAO实现

@Repository
@Qualifier(value="sessionFactory")
public class UserDaoImpl extends HibernateDaoSupport implements UserDao{

@Autowired
private UserDaoImpl(SessionFactory sessionFactory){
    setSessionFactory(sessionFactory);
}

这是我第二个数据库(Oracle)的DAO实现

@Repository
@Qualifier(value="sessionFactorySOAAPP")
public class UpdateKSEIDaoImpl extends HibernateDaoSupport implements UpdateKSEIDao{

@Autowired
private UpdateKSEIDaoImpl(SessionFactory sessionFactorySOAAPP){
    setSessionFactory(sessionFactorySOAAPP);
}

任何帮助将是荣幸:)


问题答案:

问题是您使用过

<property name="dataSource" ref="dataSource"></property>sessionFactorySOAAPP

你应该用过<property name="dataSource" ref="dataSourceSOAAPP"></property>



 类似资料:
  • 问题内容: 我正在编写一个支持多个用户的Web应用程序。每个用户都有自己的数据库-使用H2。所有数据库架构都是相同的。 我希望将Spring + Hibernate用于此应用程序。 因此,我坚持如何将用户的数据库与该用户相关联- 也许将其与HTTPSession关联,并扩展spring的AbstractRoutingDataSource?但这不会影响Hibernate的缓存吗?另一种方法是为每个数

  • 问题内容: 我正在尝试配置Spring + Hibernate + JPA以使用两个数据库(MySQL和MSSQL)。 我的datasource-context.xml: 每个persistence.xml包含一个单元,如下所示: PersistenceUnitManager导致以下异常: 如果只留下一个没有列表的persistence.xml,则每个列表都可以正常工作,但我需要2个单元… 我还尝

  • 问题内容: 有人知道如何在hibernate配置中添加另一个数据源,以及如何在自己的DAO中将Spring配置为其自动注入该数据源吗? 这是我的带有一个数据源的代码,可以完美运行,但是我不知道如何添加另一个数据源。我想添加另一个数据源,该数据源是具有与实际数据库不同的表的数据库。 DAO EXAMPLE 问题答案: 我假定你有一组应使用的DAO的和适当的,而其他人应该使用不同的和基于。当然,你需要

  • 问题内容: 我有一个Spring + Hibernate + JPA应用程序。用户登录时,可以从要连接的数据库列表中进行选择(这是要求)。所有数据库都有相同的架构,因此将使用相同的实体和DAO。 现在,我有一个EntityManager(目前正在使用一个数据库),它被注入到DAO中,如下所示: 有什么方法可以让DAO根据从服务层接收到的参数/属性自动接收entityManager(由Spring管

  • 问题内容: 我对Spring Boot还是很陌生,我想为我的项目创建一个多数据源。这是我目前的情况。我有两个用于多个数据库的实体包。比方说 所以,目前我有两个实体类 UserMySql.java 我想实现一个配置,如果我从UserMySql创建用户,它将被保存到MySql数据库,如果我从Userh2创建用户,它将被保存到H2数据库。所以,我也有两个DBConfig,比如说MySqlDbConfig

  • 我有一个使用1.5.1版本spring boot的应用程序的问题。 启动程序时出现以下错误: 我尝试使用@primary,但当我需要使用其他数据源时,它不起作用。 谢谢你

  • 问题内容: 我有两个名为simple-core-impl和的项目simple-core-web。 这两个项目都是,spring based并且都具有一个父项目名称simple-core。 我simple-impl-config.xml在simple-core-impl项目simple-web-config.xml中simple-impl-config.xml。 我有一个具有类的bean:simpl