Перемещение от Oracle To MySQL

В настоящее время я мигрирую базы данных от Oracle до MySQL. Я, главным образом, использую Яву, чтобы послать вопросы базе данных, используя JDBC. В процессе перемещения я должен изменить много своих вопросов в Явском коде (вопросы трудно закодированы), поскольку они не будут работать в MySQL.

Я хочу быть в состоянии повторно закодировать мои вопросы таким способом, которым я могу легко переключиться между базами данных, если проблемы возникают; я изменяю все свои вопросы стандартному SQL, но есть области, где это не возможно. Я думаю о наличии двух версий вопросов, один для Oracle и один для MySQL, таким образом, я могу переключиться между обоими (у меня будет две версии временно только, чтобы видеть, может ли MySQL справиться с нашими потребностями). Однако, это кажется, что ужасная идея - делает у кого-либо есть совет относительно лучшего способа, которым они сделали бы это?

0
nl ja de
@favoretti никогда не слышал о ORM, изучит, он благодарит.
добавлено автор JCS, источник
Вы рассмотрели использование решения ORM? (Зимуйте или одинаково),
добавлено автор favoretti, источник

3 ответы

У вас есть связка вариантов.

Во-первых, многие люди теперь используют инструменты Object-Relational Mapping (ORM), чтобы соединить применения к базам данных SQL. Они существуют во множестве различных ароматов - Зимуют, популярно - и позвольте вам выключатель между базами данных по очень небольшому количеству стоимости. Однако у них действительно есть довольно крутая кривая обучения. Неопытные разработчики часто борются с исполнительными проблемами в заявлениях ORM.

Если вы придерживаетесь "традиционного" JDBC, я предлагаю, чтобы вы вынули тело SQL из Явского кода и рассматривали его как ресурс. Как Генри предполагает, вы могли использовать файлы свойств и использовать заполнителей параметра (идеально названные заполнители, используя Весну шаблон). В то время как это действительно распространяет код для данной части функциональности в два файла, это облегчает быстро совершенствовать SQL и проверять новые версии.

3
добавлено
Я испытаю второе решение, спасибо.
добавлено автор JCS, источник

Одна возможность состоит в том, чтобы сохранить вопросы в имущественном файле. Вы имели бы один для Oracle и один для MySql.

0
добавлено

Я должен добавить - ORM - хороший совет и будет работать..., когда вы начинаете с нового применения, и можно проектировать рвение на модели предметной области.

В этом случае, однако, есть существующее приложение, которое призывает большое количество SQL-запросов. ORM основывал вопросы (HQL, JPQL) переводят к SQL очень хорошо; SQL по определению не переводит к слою ORM, однако, существенные изменения будут необходимы, чтобы сделать его большим объектно-ориентированным подходом для данных.

Проблема все еще сохранится, даже когда вам действительно удается работать в слое ORM. Уже есть существенное различие между MySQL и Oracle в том, как поколение первичного ключа работает, например; автоматическая нумерация использования MySQL, где Oracle использует последовательность. Вероятно, у вас уже есть существующая модель данных, которую необходимо перепроектировать в код слоя ORM; это не будет кодом поперечной базы данных.

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Oracle RU
Oracle RU
303 участник(ов)

Русскоязычная группа по Oracle. — Архитектура СУБД — PL/SQL — Оптимизация — Администрирование — Вакансии Oracle (указать инфу по вилке ЗП и удалёнке) Приглашайте коллег :-) Запрещены: личные оскорбления, обсуждения оффтопик вопросов политики и религии

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async