Я разрабатываю корпоративное программное обеспечение для крупной компании, использующей Oracle. В PL/SQL планируется разработать основной процессор. Мне интересно, существует ли какой-либо ORM, например Hibernate для Java, но для PL/SQL. У меня есть некоторые идеи, как создать такую структуру с использованием системных таблиц PL/SQL и Oracle, но это интересно - почему никто раньше этого не делал? Как вы думаете, что будет эффективно в скорости и потреблении памяти? Зачем?ORM для Oracle pl/sql
ответ
Существуют ORM, обеспечивающие интерфейс между агностическим языком базы данных, таким как Java и СУБД, например Oracle. PL/SQL в отличие от этого знает СУБД Oracle тесно и предназначен для работы с ним (и намного эффективнее, чем Java + ORM). Таким образом, ORM между PL/SQL и СУБД Oracle будет и лишним, и бесполезным!
Что я имею в виду, так это то, что я могу создать набор объектов Oracle (используя «создавать или заменять типы FOO как объекты ..», созданные с помощью скрипта), что облегчит дальнейшую разработку программного обеспечения pl/sql (в основном это будет содержать CRUD). Как вы думаете, будут ли эти объекты эффективными? – Arino
Я никогда не сталкивался с ситуацией, когда это было бы полезно, и я уверен, что производительность не будет столь же эффективной, как и код PL/SQL, который не использовал объекты. Вы также вполне вероятно потеряете возможность выполнять операции на основе набора и объемные вставки/обновления. –
Как указал Тони, ORM действительно служат помощником между границами контекста приложения и Db.
Если вы ищете дополнительный уровень абстракции на уровне базы данных, вы можете захотеть взглянуть на инкапсуляцию таблицы. Это было большой тенденцией еще в начале 2000-х годов. Если вы найдёте, вы найдете массу статей по этому вопросу.
Plsqlintgen все еще кажется, что вокруг на http://sourceforge.net/projects/plsqlintgen/
Как вы думаете, этот метод эффективен? – Arino
Я думаю, это зависит от причины абстракции и размера проекта. Если у вас есть столы столов, это может быстро стать кошмаром для обслуживания. Производительность также может вызывать озабоченность. В общем, я стараюсь избегать этого шаблона, если только это не единственный способ удовлетворить проблемы безопасности (SOX, HIPPA и т. Д.). –
Возьмите чтение через эти две статьи - они содержат некоторые интересные моменты
Oracle представляет собой базу данных отношений, а также имеет возможность работать как объектно-ориентированная база данных. Он делает это, создавая слой абстракции (довольно автоматически) поверх реляционной структуры. Это, по-видимому, устранит необходимость в любом «инструменте», поскольку он уже встроен.
Этот ответ содержит некоторые соображения о преимуществах и недостатках упаковки ваших таблиц в PL/SQL-таблицах (API таблицы) для операций CRUD.
Understanding the differences between Table and Transaction API's
Там была также хорошая дискуссия по этому вопросу в последние годы в Великобритании Oracle User Group - общий вывод был против использования таблиц API-интерфейсов и интерфейсов API транзакций, по той же причине - сила пл/sql - это процедурный контроль над операторами SQL, в то время как TAPI отталкивают вас от написания SQL-операций на основе набора и обработки строк за строкой.
Аргумент для TAPI - это то, где вы можете использовать какую-либо политику доступа, но Oracle предлагает множество других способов сделать это (мелкозернистый контроль доступа, ограничения, триггеры для вставки/обновления/etc могут быть используется для заполнения значений по умолчанию и обеспечения того, чтобы вызывающий код передавал действительный запрос).
Я бы определенно посоветовал не переносить таблицы в типы объектов PL/SQL.
Большая часть производительности с использованием pl/sql связана с тем, что вы можете легко определить вещи с точки зрения базовой структуры базы данных - тип записи строки может быть просто определен как% ROWTYPE и будет автоматически влиять, когда изменения структуры таблицы.
myRec myTable%ROWTYPE
INSERT INTO table VALUES myRec;
Это также относится к коллекции, основанной над этими типами, и есть мощные массовые операции, которые могут быть использованы для извлечения & вставки целых коллекций.
С другой стороны, для каждого типа объектов должны быть явно затронуты типы объектов, каждый раз, когда вы хотите их изменить, для каждого изменения таблицы требуется, чтобы тип объекта был затронут и выпущен, удвоив вашу работу.
Также может быть сложно освободить изменения, если вы используете наследование и коллекции типов (вы можете «заменить» пакет, но не можете заменить тип, если он используется другим типом).
Это не помещает OO PL/SQL вниз - есть места, где он определенно упрощает код (т. Е. Избегает дублирования кода, в любом месте, где вы явно выиграете от полиморфизма), - но лучше всего понимать и играть в сильные стороны язык и основная сила в том, что язык тесно связан с базовой БД.
Это говорит о том, что я часто создаю процедуры для построения записи по умолчанию, вставляю запись и т. Д. - достаточно часто, чтобы иметь макросы редактора для нее, - но я никогда не нашел хороший аргумент для автоматического создания этого кода для все таблицы (хороший способ создать много неиспользуемого кода?)
- 1. Oracle PLSQL скрипт для конкатенации
- 2. ORACLE PLSQL Функция/Trigger
- 3. Заявление Oracle PLSQL
- 4. Производительность Oracle/PLSQL
- 5. Oracle plsql error
- 6. Уничтожить объект Oracle PLSQL
- 7. PLSQL с Oracle 11g
- 8. Передача параметров функции oracle plsql
- 9. Переменная таблицы Tsql для Oracle PLSql
- 10. Параметры передачи автоматически для функции oracle plsql
- 11. Многозначная колонка в Oracle PLSQL
- 12. Oracle Plsql Date Time Manipulation
- 13. Oracle PLSQL функции члена объекта
- 14. Oracle PLSQL ORA-39726 ошибка
- 15. Oracle plsql процедура не переопределяется
- 16. печать эквивалент на Oracle PLSQL
- 17. Даты включения исключения Oracle PLSQL
- 18. Разбивка по ошибке Oracle/PLSQL
- 19. dynamic goto in oracle plsql
- 20. Oracle STANDARD_HASH недоступен в PLSQL?
- 21. Развертывание пакетов plsql в oracle
- 22. plsql - выбор Oracle с коллекциями
- 23. Формат даты в Oracle PlSql
- 24. Oracle: получение ссылок в PLSQL
- 25. Создать файл .log plsql/oracle
- 26. Печать Oracle PLSQL OUT переменная
- 27. Как использовать петли plsql без установки oracle
- 28. База данных Oracle, большое управление кодом plsql
- 29. Oracle PLSQL - объявить курсор на несуществующей таблице
- 30. Oracle PLSQL, чтобы обновление MySQL Query
Что я имею в виду, так это то, что я могу создать набор объектов Oracle (используя «создавать или заменять типы FOO как объекты ..», созданные с помощью скрипта) , что облегчит дальнейшее развитие программного обеспечения pl/sql (в основном это будет содержать операции CRUD). Как вы думаете, будут ли эти объекты эффективными? – Arino