Jump to content

Империя Apache-db

Империя Apache-db
Разработчик(и) Фонд программного обеспечения Apache
Стабильная версия
3.0.0 / 11 марта 2022 г .; 2 года назад ( 11.03.2022 )
Репозиторий Репозиторий EmpireDB
Написано в Ява
Операционная система Кросс-платформенный
Тип Структура сохранения
Лицензия Лицензия Апач 2.0
Веб-сайт империя-БД .apache .org

Apache Empire-db — это библиотека Java, предоставляющая объектно-ориентированный API высокого уровня для доступа к системам управления реляционными базами данных (СУРБД) через JDBC . Apache Empire-db имеет открытый исходный код и предоставляется по лицензии Apache License 2.0 от Apache Software Foundation .

По сравнению с объектно-реляционным сопоставлением (ORM) или другими решениями для сохранения данных, такими как Hibernate , iBATIS или TopLink Empire-db не использует XML-файлы или аннотации Java для обеспечения сопоставления простых (старых) объектов Java ( POJO ) с базой данных. таблицы, представления и столбцы. Вместо этого Empire-db использует объектную модель Java для описания базовой модели данных и API, который работает почти исключительно со ссылками на объекты, а не со строковыми литералами .

Целью Empire-db является обеспечение лучшего качества программного обеспечения и улучшенной удобства сопровождения за счет повышения безопасности во время компиляции и уменьшения избыточности метаданных. Кроме того, приложения могут выиграть от более высокой производительности благодаря полному контролю над операторами SQL и их выполнением со стороны разработчика по сравнению с большинством решений для сопоставления OR. [1]

Основные преимущества

[ редактировать ]

Ключевым преимуществом Empire-db является его API для динамической генерации SQL для произвольных операторов выбора, обновления, вставки или удаления исключительно с использованием методов Java, которые ссылаются на объекты модели. Это обеспечивает безопасность типов и почти полностью исключает использование строковых литералов для имен или выражений в коде. Кроме того, независимость СУБД достигается за счет подключаемой модели драйверов.

Использование ссылок на объекты таблиц и столбцов значительно повышает безопасность во время компиляции и, таким образом, сокращает объем тестирования. Положительным побочным эффектом является возможность использования автодополнения кода IDE для просмотра модели данных, что повышает производительность и устраняет необходимость в других внешних инструментах или плагинах IDE.

Кроме того, объектная модель также обеспечивает безопасный и простой доступ к метаинформации модели данных, такой как тип данных поля, максимальная длина поля, является ли поле обязательным и ограниченный выбор вариантов значений поля. Метаданные могут расширяться пользователем и не ограничиваются метаданными, связанными с СУБД. Доступность метаинформации способствует созданию более общего кода и устраняет избыточность на всех уровнях приложения.

Особенности с первого взгляда

[ редактировать ]
  • Определение модели данных с помощью объектной модели Java исключает необходимость изучения XML-схем или аннотаций и позволяет легко перехватывать и расширять данные пользователя.
  • Независимая обработка записей и определение команд портативной СУБД с поддержкой различных реляционных баз данных, таких как Oracle , Microsoft SQL Server , MySQL , Derby , H2 и HSQLDB (начиная с версии 2.0.5).
  • Генерация DDL для целевой СУБД из определения объекта либо для всей базы данных, либо для отдельных объектов, таких как таблицы, представления, столбцы и отношения.
  • Типобезопасный API для динамического создания команд SQL позволяет динамически создавать инструкции SQL, используя только методы API и ссылки на объекты вместо строковых литералов. Это обеспечивает высокую степень типовой безопасности, что упрощает тестирование и обслуживание.
  • Уменьшенный объем кода Java и мощный перехват доступа к полям и метаданным через динамические компоненты в качестве альтернативы POJO. Это даже позволяет изменять модель данных (DDL) во время выполнения.
  • Автоматическое отслеживание состояния записи и модификации полей (так называемая «грязная проверка») для вставки/обновления только измененных полей.
  • Поддержка оптимистической блокировки через столбец метки времени.
  • Нет необходимости всегда работать с полными объектами базы данных. Создавайте запросы для предоставления данных именно так, как необходимо, и получайте результат, например, в виде списка POJO любого типа с соответствующими методами установки свойств или конструктором.
  • Легкая и пассивная библиотека с нулевой конфигурацией, обеспечивающая простую интеграцию с любой архитектурой или платформой.

В качестве примера рассмотрим базу данных с двумя таблицами «Сотрудники» и «Отделы» , для которой должен быть получен список сотрудников в определенном формате, с определенными ограничениями и заданным порядком.

Предполагается, что соответствующий оператор SQL синтаксиса Oracle будет следующим:

    SELECT t1.EMPLOYEE_ID, 
           t1.LASTNAME || ', ' || t1.FIRSTNAME AS NAME, 
           t2.DEPARTMENT
    FROM (EMPLOYEES t1 
          INNER JOIN DEPARTMENTS t2 ON t1.DEPARTMENT_ID = t2.DEPARTMENT_ID)
    WHERE upper(t1.LASTNAME) LIKE upper('Foo%') 
      AND t1.RETIRED=0
    ORDER BY t1.LASTNAME, t1.FIRSTNAME

Этот оператор SQL можно создать с помощью командного API Empire-db, используя такие ссылки на объектную модель:

    SampleDB db = getDatabase();
    // Declare shortcuts (not necessary but convenient)
    SampleDB.Employees EMP = db.EMPLOYEES;
    SampleDB.Departments DEP = db.DEPARTMENTS;
    // Create a command object
    DBCommand cmd = db.createCommand();
    // Select columns
    cmd.select(EMP.EMPLOYEE_ID);
    cmd.select(EMP.LASTNAME.append(", ").append(EMP.FIRSTNAME).as("NAME"));
    cmd.select(DEP.DEPARTMENT);
    // Join tables
    cmd.join  (EMP.DEPARTMENT_ID, DEP.DEPARTMENT_ID);
    // Set constraints
    cmd.where(EMP.LASTNAME.likeUpper("Foo%"));
    cmd.where(EMP.RETIRED.is(false));
    // Set order
    cmd.orderBy(EMP.LASTNAME);
    cmd.orderBy(EMP.FIRSTNAME);

Чтобы выполнить запрос и получить список POJO, содержащих результат запроса, можно использовать следующий код:

    // Class definition for target objects
    public class EmployeeInfo {
        private int employeeId;
        private String name;
        private String department;
        // Getter's and Setters for all properties
        // or a public Constructor using fields
        public get...
        public set...
    }

    // Retrieve employee list using the cmd object created above
    DBReader reader = new DBReader();
    try {
        reader.open(cmd, getConnection());
        List<EmployeeInfo> empList = reader.getBeanList(EmployeeInfo.class);
    } finally {
        reader.close()
    }

Empire-db также поддерживает доступ к полям через ссылки на объекты или получение результатов запроса в формате XML.

Empire-db изначально был разработан в ESTEAM Software, немецкой компании по разработке программного обеспечения, которая использовала Empire-db для разработки различных приложений для различных отраслей.

В январе 2008 года Empire-db стал официально открытым исходным кодом и впервые опубликован на SourceForge.net.

В июне 2008 года в Apache Software Foundation было подано предложение превратить Empire-db в проект инкубатора Apache. В июле 2008 года Empire-db была принята на инкубацию, и все права на Программное обеспечение были переданы Apache Foundation.

В октябре 2008 года Empire-db 2.0.4 стала первой официальной версией инкубатора Apache, в которой все имена пакетов были изменены и теперь начинались с org.apache.empire.

См. также

[ редактировать ]
  1. ^ «Империя Apache-db» . Empire-db.apache.org . Проверено 21 марта 2022 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e3d025b18e3f4c69baca31c2d994cad0__1703947440
URL1:https://arc.ask3.ru/arc/aa/e3/d0/e3d025b18e3f4c69baca31c2d994cad0.html
Заголовок, (Title) документа по адресу, URL1:
Apache Empire-db - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)