将 J2EE 应用程序与两个不同的数据库连接起来

Posted

技术标签:

【中文标题】将 J2EE 应用程序与两个不同的数据库连接起来【英文标题】:Connect J2EE application with two different databases 【发布时间】:2014-02-09 17:13:03 【问题描述】:

我正在使用带有 mysql 的默认设置的 appfuse 开发 J2EE 应用程序

<!-- Database settings -->
<dbunit.dataTypeFactoryName>org.dbunit.ext.mysql.MySqlDataTypeFactory</dbunit.dataTypeFactoryName>
<dbunit.operation.type>CLEAN_INSERT</dbunit.operation.type>
<hibernate.dialect>org.hibernate.dialect.MySQL5InnoDBDialect</hibernate.dialect>
<jdbc.groupId>mysql</jdbc.groupId>
<jdbc.artifactId>mysql-connector-java</jdbc.artifactId>
<jdbc.version>5.1.27</jdbc.version>
<jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
<jdbc.url>jdbc:mysql://localhost/$db.name?createDatabaseIfNotExist=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8&amp;amp;autoReconnect=true</jdbc.url>
<jdbc.username>root</jdbc.username>
<jdbc.password></jdbc.password>
<jdbc.validationQuery>SELECT 1 + 1</jdbc.validationQuery>

但我需要将我的应用程序与外部数据库 (SQL QERVER) 连接以检索一些数据。 我需要帮助配置 maven 以使用两个不同的数据库(mysql +sql server)

【问题讨论】:

【参考方案1】:

maven 将帮助您加载驱动程序 jar 文件。您将创建两个数据源/会话工厂来实现这一点。

【讨论】:

【参考方案2】:

我认为这可以通过以下简要指南轻松实现:

    在 applicationContext-resources.xml 中使用 MSSQL 特定值(例如驱动程序类、url 等)创建第二个“dataSource”bean 定义。给它一个不同的 bean id,也许是“dataSourceMSSQL”。如果您不想硬编码属性值,请将它们绑定到不同的属性文件。为简单起见,您可以对其进行硬编码(不推荐)。 如果您选择其他方式,则需要创建另一个属性文件来存储 mssql 连接属性,可能是 jdbc-mssql.properties 并将其添加到 propertyConfigurer 列表中。这还要求您更改 pom 文件以在 部分下包含自定义设置。这可能有点复杂。

    在 applicationContext-dao.xml 中使用 MSSQL 特定值(例如休眠方言等)创建另一个“sessionFactory”bean 定义,并将其绑定到“dataSourceMSSQL”作为 dataSource 属性引用。或许给它一个不同的 bean id,“sessionFactoryMSSQL”。

    连接需要新 sessionFactory 的 DAO,即:

@Autowired private SessionFactory sessionFactoryMSSQL;

希望这对你有用。

【讨论】:

以上是关于将 J2EE 应用程序与两个不同的数据库连接起来的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 NAudio 将两个 wav 音频文件与 30 秒的白色声音连接起来

将 QMainWindow 与 Qdialog 小部件连接起来

在c语言或者php 怎么将两个或多个常量连接起来,比如一个常量为1 另一个常量为2 连接成12

MySQL数据库联合查询与连接查询

如何使用 Laravel 将两个表与数据透视表连接起来?

如何在 LINQ sql 中将两个表与一个具有不同值的表连接起来?