如何创建在Java中不同的数据库多个数据库连接(How to create multiple dat

2019-06-24 10:45发布

我有一个使用在不同的地理位置四个数据库的应用程序。 所有数据库中包含相同的表,仅数据库名称根据位置不同。 我必须建立在我的应用程序,它从每个数据库使用数据的一些报告。 什么是创建从Java应用程序的数据库连接的正确方法,是有这个任务,我可以用一个合适的设计模式?

Answer 1:

由于您没有标记任何这样你的问题, hibernateJPAORM ,我假设你正在处理普通的JDBC。

话虽如此,我建议你有一个DAO层来处理基础数据库,并保留连接详细信息的具体实现。 你可以在一些配置连接字符串.properties文件,让说。

[补充]

您还可以使用DAO工厂,抽象工厂或工厂马托模式的实现,两者适合这里的。

[链接]

  • 非常细的实施DAO和DAO厂 ,由BalusC
  • 核心J2EE模式 -可以说是过时,但可以提供一些思路。


Answer 2:

还有,你能达到这个多种方式:

  1. 如果您正在使用其中任何一种支持分布式事务Java EE容器,那么你可以使用那里的功能。
  2. 如果你是普通的JDBC,那么你将不得不维护每个数据库自己的连接。 对于JDBC
    1. 提供所有连接的详细信息
    2. 有一个门面,其通过调用一个抽象的通用的DAO为您提供了所需的对象。
    3. 有一个工厂基于连接这造成道。
  3. 使用ORM工具如Hibernate,在那里你可以使用配置多个数据库。 教程 。
  4. 如果你使用Spring,那么您可以配置每个数据库都有一个数据源。 文件

设计模式:

  • 外观模式 - 隐藏的复杂性和多数据库的使用。
  • 工厂 - 如果你自己管理数据库连接。
  • 辛格尔顿 - 对于数据源


Answer 3:

理想的方式实现这一目标是通过使用像OLAP多维系统。 但是,看看你可以创建一个视图掉那些数据库。 然后你只需要查询视图(即只是一个单一的数据库连接)。 此外,如果你愿意,你可以仍然使用多个数据库连接。



Answer 4:

您可以处理多个连接使用容易像Hibernate的一个ORM工具..你可以指定一个独立的配置文件,每个连接实例通过每次获得一个新的会话工厂所需的连接。

另一种方法是使用数据源和JNDI: Java的连接到多个数据库

我想你可以使用工厂模式和Singleton模式的组合为宗旨。



Answer 5:

是很容易的:)

1.创建一个数据源尝试连接到数据库

public DataSource getDataSource(String db) throws Exception {
DataSource dt = null;
InitialContext ic = null;
try {
    if(db.trim().equals("you_database_name")) {
        dt = (DataSource)ic.lookup("jdbc/connection_name");
    } else if(db.trim().equals("you_database_name")) {
        dt = (DataSource) ic.lookup("jdbc/connection_name");
    }
    return dt;
} catch(NamingException n) {
    throw new Exception("Err getDataSource (ServiceLocator) NamingException - " + n.getMessage());
}

2.创建一个类数据库,记得在接近该点所有的连接。

public class DataBases {
public YouNameDataSourceClass dataSrc;
public DataBases() throws Exception {
   super();
   dataSrc = new YouNameDataSourceClass.getDataSource();
}
public Connection getConnectionAS400() throws Exception {
    return locator.getDataSource("you_database_name").getConnection();
}

public Connection getConnectionOracle() throws Exception {
    return locator.getDataSource("you_database_name").getConnection();
}

public Connection getConnectionSQLServer() throws Exception {
    return locator.getDataSource("you_database_name").getConnection();
}
}

好看。



文章来源: How to create multiple database connections for different databases in java