РЕДАКТИРОВАТЬ
Я почему-то подумал, что вы хотите знать, как разработать приложение, которое может обрабатывать несколько баз данных.Так что это шаблон, который может помочь вам в этом.Но чтобы на самом деле запросить вашу базу данных и получить из нее все необходимые данные, вам нужно использовать соответствующие API.( JDBC для вашего приложения Java, например).Прочитайте до конца этого ответа, я только что добавил пример использования JDBC с реальной базой данных Sql Server.
(Первая часть: как управлять постоянством layer)
У вас должна быть многоуровневая архитектура для вашей программы.Одним из этих уровней должен быть постоянный уровень, который будет запрашивать / извлекать данные из ваших баз данных.Отныне я собираюсь обсуждать только этот уровень персистентности.
Один из способов сделать это - использовать интерфейсы Java.
public interface DataService
{
connect();
close();
ArrayList<IUser> retrieveUserDatas(..);
// other expected operations
....
}
И затем иметь один класс реализации этого интерфейса.для каждого типа базы данных.Таким образом, у вас будет:
class SqlServer implements DataService
{
// Implementation of your operations using Sql Server drivers
}
class Mysql implements DataService
{
// Implementation of your operations using Mysql drivers
}
И тогда у вас может быть менеджер, который решит, какую из баз данных вы хотите использовать:
class Manager
{
DataService dataService;
public Manager(string databaseType)
{
if(databaseType.equals("sqlserver"))
{
dataService = new SqlServer();
}
else if(databaseType.equals("mysql"))
{
dataService = new Mysql();
}
}
}
Так что на ваших верхних уровнях вы будетеиметь возможность создать менеджера для вашего уровня персистентности с подходящей системой баз данных:
Manager manager = new Manager("mysql"); // I want to manage my database layer with mysql
Теперь атрибут dataService
от вашего менеджера будет экземпляром класса Mysql
, и вы сможетеиспользовать операции этого класса.Это всего лишь одна строка кода, которую нужно менять каждый раз, когда вы добавляете новую базу данных в вашу систему (+ класс, реализующий интерфейс и использующий конкретные драйверы вашей базы данных).
FYI, это brige design-pattern !
(Вторая часть: работа с JDBC)
Например, вот что реализует класс для базы данных Sql Serverможет выглядеть так:
public class SqlServerAccess implements IDataServerAccess {
static final String url= "jdbc:sqlserver://localhost:1433;databaseName="NAME OF YOUR DATABASE";integratedSecurity=true;";
Connection connector;
public void connection() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
connector = DriverManager.getConnection(url, "root", "");
} catch (Exception ex) {
Logger.getLogger(SqlServerAccess.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void close() {
try {
if(connector != null){
connector.close();
}
} catch (SQLException ex) {
Logger.getLogger(SqlServerAccess.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
В методе connection()
вы можете видеть, что я ссылался на драйвер Sql Server: com.microsoft.sqlserver.jdbc.SQLServerDrive
Так что для каждой базы данных у вас будетконкретный драйвер для загрузки (.jar) и указания в вашем классе реализации.
Наконец, вот как выглядит вставка:
public void insertData(Data data) {
try {
Statement st = dataServerAccess.connect().createStatement();
st.execute("INSERT INTO DATA(bla, bla, bla, bla, created_at)"
+ "VALUES('" + data.bla()
+ "', '" + ..
+ "', '" + ..
+ "', '" + ..
+ "','" + getTodayTimestamp() +"')");
} catch (SQLException ex) {
} finally {
dataServerAccess.close();
}
}
Надеюсь, это объяснение поможет вам построить то, что выхочу.Возможно, вам придется погуглить все эти ключевые слова (например, JDBC, слой базы данных, и вы можете пойти дальше с JPA, который является Object-Relational-Mapper. В любом случае, Ключевые слова проверять в Google!).Например, вот некоторая документация , которая поможет вам использовать JDBC с mysql.