Досить часто виникають ситуації, коли тобі потрібно працювати з двома базами одночасно. Наприклад, ти читаєш дані з однієї бази, обробляєш їх та пишеш до іншої.
Або ще частіший випадок. Твоя програма має одну локальну базу даних для роботи, а також може читати дані з різних віддалених джерел, які підтримують SQL-формат запиту даних. Наприклад, Excel.
Для цих віддалених джерел даних буває дуже корисно налаштувати свій Hibernate-мапінг, щоб бізнес-логіка програми могла бути простішою і працювати лише з Java-об'єктами.
Найпростіший спосіб це зробити — мати кілька файлів конфігурацій. Наприклад, так:
Ну і весь код ініціалізації Hibernate фактично просто дублюється:
Configuration oracleCfg = new Configuration();
oracleCfg.configure("/com/javarush/hibernate/multipledatabase/hibernate_oracle.cfg.xml");
SessionFactory oracleSessionFactory = oracleCfg.buildSessionFactory();
Session oracleSession = oracleSessionFactory.openSession();
Configuration mysqlCfg = new Configuration();
mysqlCfg.configure("/com/javarush/hibernate/multipledatabase/hibernate_mysql.cfg.xml");
SessionFactory mySqlSessionFactory = mysqlCfg.buildSessionFactory();
Session mysqlSession = mySqlSessionFactory.openSession();
Employee emp = oracleSession.get(Employee.class, "E0087");
System.out.println("Employee retrived from Oracle Database");
Transaction tx = mysqlSession.beginTransaction();
mysqlSession.save(emp);
tx.commit();
System.out.println("Employee inserted in MySQL Database");
2. База в пам'яті
Існують СУБД, які є базами даних, повністю розміщені в пам'яті. Такі СУБД часто поширюються просто у вигляді бібліотек, і їх легко включити у звичайну програму. Такими СУБД, наприклад, є H2 чи Hsqldb.
Додати їх до свого проєкту можна так само, як і будь-які інші бібліотеки — за допомогою залежності в Maven:
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ