Эссе базы данных

задняя часть база данных ORM SQL

Эссе базы данных

задний план

В настоящее время в индустрии разработки программного обеспечения, будь то разработка мобильных терминалов или back-end разработка, в основном встречается разработка базы данных.Здесь я расскажу о мыслях автора о базе данных.

конфликт

В мобильной или серверной разработке много раз мы чувствуем, что есть некоторые недостатки, будь то ORM или другие решения.На самом деле это происходит из-за конфликта между самой базой данных и самим языком разработки.Современные языки в основном все Это объектно-ориентированная разработка. Объектно-ориентированная разработка основана на основных принципах разработки программного обеспечения (таких как связь, агрегация и инкапсуляция), а реляционные базы данных разработаны на основе математической теории. Между этими двумя наборами теорий есть существенные различия. .
База данных возникла из файла в начале.Программа открыла файл, затем сохранила некоторые данные в файле и, наконец, закрыла файл.По этому требованию была разработана база данных. В настоящее время существует два основных типа основных реляционных баз данных, одна из которых представляет собой базу данных, основанную на сетевой передаче, а другая представляет собой встроенную базу данных.Разница между двумя базами данных заключается в том, существует ли идеальное управление полномочиями и является ли серверный код встроен в программу.
Независимо от того, какая реляционная база данных, разработчики имеют дело с ней через язык SQL.Основная технология ORM на самом деле только запрашивает данные из базы данных, считывает каждое поле в наборе результатов по элементам, а затем собирает их в объект, или ему нужно to Каждый атрибут объекта извлекается, объединяется в строку SQL, а затем отправляется в базу данных.

ORM-технология

В широком смысле ORM относится к взаимному преобразованию между объектно-ориентированной объектной моделью и структурой данных реляционной базы данных. В узком смысле ORM можно рассматривать как хранилище данных на основе реляционной базы данных, реализующее виртуальный объектно-ориентированный интерфейс доступа к данным. Упомянутая здесь ORM относится к такому фреймворку, как Hibernate.Что касается преимуществ фреймворка ORM, то мы не будем говорить о преимуществах фреймворка ORM.В общем случае персистентному классу соответствует таблица, каждый экземпляр класса соответствует записи в таблице, а каждый экземпляр класса соответствует записи в таблице.Каждый атрибут соответствует каждому полю таблицы. Однако в самом языке SQL существует конфликт, поэтому давайте сначала разделим требования.

  1. База данных должна выполнять миграцию (например, создание таблиц, добавление полей, удаление полей, описание значений по умолчанию, добавление индексов, добавление ограничений и т. д.)
  2. Таблицы и таблицы связаны отношениями
  3. Операторы SQL позволяют выбирать только те столбцы, которые вам нужны.
  4. Типобезопасность параметров и результатов инструкции SQL не гарантируется.
  5. Результат может быть фиктивным, например, хранимые процедуры и представления.

Объектно-ориентированное и описанное выше поведение на самом деле несовместимы, например, абстрагирование таблицы как класса, и каждый экземпляр класса представляет собой строку данных, которая выглядит идеально, но есть скрытый недостаток.

  1. Во-первых, основные операции с базой данных в основном состоят из CRUD.В целом, синтаксис добавления, удаления и обновления похож, и их легко абстрагировать, но запрос не простой, и внимание к данным не то же самое, поэтому Требуемый оператор запроса отличается С точки зрения запроса ORM трудно охватить все ситуации.
  2. Во-вторых, в объектно-ориентированном подходе существует наследование.Если между двумя объектами существует отношение наследования, как спроектировать структуру таблицы,

В настоящее время существует много основных технологий ORM. Hibernate — типичная технология ORM, описанная выше, а Mybatis — полуавтоматическая технология ORM. Давайте поговорим о Mybatis здесь.

  1. Mybatis не имеет функции миграции, она должна поддерживаться сторонними функциями
  2. Mybatis выполняет только сопоставление SQL с объектами, сам класс не представляет таблицу данных, а преобразованные объекты предоставляются в виде POJO. На самом деле это привязка поля

То есть сама ORM должна делать две вещи.

  1. Сама таблица сопоставления и миграция
  2. Привязка атрибутов и полей базы данных

Поскольку Mybatis слишком сильно зависит от SQL, замена базовой базы данных вызовет большую рабочую нагрузку по миграции. Hibernate не имеет этой проблемы, но Hibernate действительно недостаточно гибок. Я также только что говорил о проблеме SQL-запроса. , поэтому, если Hibernate хочет быть гибким, это слишком дорого. Оба имеют преимущества и недостатки.

Значение ORM

ORM имеет два основных значения

  1. Предотвращение внедрения и обеспечение безопасности SQL
  2. Абстрактное ООП для легкой разработки

В дополнение к двум вышеупомянутым ORM существует также более легкое техническое решение, которое заключается в предоставлении набора функций, аналогичных вызовам функций для написания SQL-запросов, и обеспечении безопасности с помощью подсказок кода IDE и проверок синтаксиса компилятора. План самый гибкий. но сложнее
С точки зрения защиты от инъекций, обычной практикой является использование связанных параметров и подготовленных операторов, чтобы избежать конкатенации строк, или использование методов, предотвращающих усечение SQL входящими одинарными кавычками заранее.

Идеи для вопроса запроса

Поскольку существует такая большая проблема с запросом к базе данных, и необходимо обеспечить безопасность SQL, у автора есть две идеи.

  1. Инкапсуляция часто используемых операций, охватывающая большинство сценариев
  2. Обеспечить безопасные базовые средства для решения особых ситуаций запроса