Apache Empire-db - Apache Empire-db
Эта статья не цитировать любой источники.Май 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | Фонд программного обеспечения Apache |
---|---|
Стабильный выпуск | 2.4.7 / 31 октября 2018 г. |
Репозиторий | Репозиторий EmpireDB |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Структура настойчивости |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | empire-db |
Apache Empire-db - это библиотека Java, которая предоставляет объектно-ориентированный API высокого уровня для доступа системы управления реляционными базами данных (СУБД) через JDBC. Apache Empire-db имеет открытый исходный код и предоставляется на условиях Лицензия Apache 2.0 от Фонд программного обеспечения Apache.
В сравнении с Объектно-реляционное отображение (ORM) или другие решения для сохранения данных, такие как Спящий режим, iBATIS или же TopLink Empire-db не использует файлы XML или аннотации Java для отображения простого (старого) объекта Java (POJO s) в таблицы, представления и столбцы базы данных. Вместо этого Empire-db использует объектную модель Java для описания базовой модели данных и API, который работает почти исключительно со ссылками на объекты, а не с строковые литералы.
Целью Empire-db является обеспечение лучшего качества программного обеспечения и улучшенной ремонтопригодности за счет повышения безопасности во время компиляции и уменьшения избыточности метаданных. Кроме того, приложения могут получить лучшую производительность за счет полного контроля над SQL операторов и их выполнение разработчиком по сравнению с большинством решений OR-mapping.
Основные преимущества
Ключевым преимуществом Empire-db является его API для динамической генерации SQL для произвольных операторов выбора, обновления, вставки или удаления исключительно с использованием методов Java, которые ссылаются на объекты модели. Это обеспечивает безопасность типов и почти полностью исключает использование строковых литералов для имен или выражений в коде. Кроме того, независимость СУБД достигается за счет модели подключаемого драйвера.
Использование ссылок на объекты таблиц и столбцов значительно повышает безопасность во время компиляции и, таким образом, сокращает объем тестирования. В качестве положительного побочного эффекта автозавершение кода IDE может использоваться для просмотра модели данных, что увеличивает производительность и устраняет необходимость в других внешних инструментах или IDE-плагинах.
Кроме того, объектная модель также обеспечивает безопасный и легкий доступ к метаинформации модели данных, такой как тип данных поля, максимальная длина поля, является ли поле обязательным, и конечный выбор вариантов для значений поля. Метаданные расширяются пользователем и не ограничиваются метаданными, связанными с СУБД. Доступность метаинформации способствует созданию более общего кода и устраняет избыточность на всех уровнях приложения.
Краткий обзор функций
- Определение модели данных с помощью объектной модели Java исключает необходимость изучения XML-схем или аннотаций и легко допускает перехват и расширения пользователей.
- Независимая обработка записей и определение команд портативной СУБД с поддержкой различных реляционных баз данных, таких как Oracle, Microsoft SQL Server, MySQL, дерби, H2 и HSQLDB (начиная с версии 2.0.5)
- Генерация DDL для целевой СУБД из определения объекта либо для всей базы данных, либо для отдельных объектов, таких как таблицы, представления, столбцы и отношения.
- Типобезопасный API для динамической генерации команд SQL позволяет динамически строить операторы SQL, используя только методы API и ссылки на объекты вместо строковых литералов. Это обеспечивает высокую степень типовой безопасности, что упрощает тестирование и обслуживание.
- Уменьшенный объем кода Java и мощный перехват доступа к полям и метаданным с помощью динамических bean-компонентов в качестве альтернативы POJO. Это даже позволяет изменять модель данных (DDL) во время выполнения.
- Автоматическое отслеживание состояния записи и модификации полей (также известная как «грязная проверка») только для вставки / обновления измененных полей.
- Поддержка оптимистичной блокировки с помощью столбца временных меток.
- Нет необходимости всегда работать с полными объектами базы данных. Создавайте запросы для предоставления данных точно так, как это необходимо, и получения результата, например, в виде списка любого типа POJO с соответствующими установщиками свойств или конструктором.
- Легкая и пассивная библиотека с нулевым объемом конфигурации, позволяющая легко интегрироваться с любой архитектурой или платформой.
Пример
В качестве примера рассмотрим базу данных с двумя таблицами с именем Сотрудники и Отделы для которого необходимо получить список сотрудников в определенном формате с определенными ограничениями и заданным порядком.
Предполагается, что соответствующий оператор SQL синтаксиса Oracle имеет следующий вид:
ВЫБРАТЬ t1.EMPLOYEE_ID, t1.ФАМИЛИЯ || ', ' || t1.ИМЯ В КАЧЕСТВЕ ИМЯ, t2.ОТДЕЛЕНИЕ ИЗ (СОТРУДНИКИ t1 ВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ ОТДЕЛЕНИЯ t2 НА t1.DEPARTMENT_ID = t2.DEPARTMENT_ID) КУДА верхний(t1.ФАМИЛИЯ) ПОДОБНО верхний('Foo%') И t1.НА ПЕНСИИ=0 ПОРЯДОК К t1.ФАМИЛИЯ, t1.ИМЯ
Этот оператор SQL можно создать с помощью командного API Empire-db, используя такие ссылки на объектную модель:
SampleDB db = getDatabase(); // Объявление ярлыков (не обязательно, но удобно) SampleDB.Сотрудники EMP = db.СОТРУДНИКИ; SampleDB.Отделы DEP = db.ОТДЕЛЕНИЯ; // Создаем командный объект DBCommand cmd = db.createCommand(); // Выбираем столбцы cmd.Выбрать(EMP.EMPLOYEE_ID); cmd.Выбрать(EMP.ФАМИЛИЯ.добавить(", ").добавить(EMP.ИМЯ).в качестве("ИМЯ")); cmd.Выбрать(DEP.ОТДЕЛЕНИЕ); // Соединяем таблицы cmd.присоединиться (EMP.DEPARTMENT_ID, DEP.DEPARTMENT_ID); // Устанавливаем ограничения cmd.куда(EMP.ФАМИЛИЯ.likeUpper("Фу%")); cmd.куда(EMP.НА ПЕНСИИ.является(ложный)); // Устанавливаем порядок cmd.Сортировать по(EMP.ФАМИЛИЯ); cmd.Сортировать по(EMP.ИМЯ);
Чтобы выполнить запрос и получить список POJO, содержащих результат запроса, можно использовать следующий код:
// Определение класса для целевых объектов общественный учебный класс EmployeeInfo { частный int employeeId; частный Нить имя; частный Нить отделение; // Получатели и сеттеры для всех свойств // или публичный конструктор, использующий поля общественный получать... общественный набор... } // Получить список сотрудников, используя созданный выше объект cmd DBReader читатель = новый DBReader(); пытаться { читатель.открыто(cmd, getConnection()); Список<EmployeeInfo> empList = читатель.getBeanList(EmployeeInfo.учебный класс); } наконец-то { читатель.Закрыть() }
Empire-db также поддерживает доступ к полям через ссылки на объекты или получение результатов запроса в виде XML.
История
Первоначально Empire-db была разработана в ESTEAM Software, немецкой компании по разработке программного обеспечения, которая использовала Empire-db для разработки различных приложений для различных отраслей.
В январе 2008 года Empire-db был официально открыт и впервые опубликован на SourceForge.net.
В июне 2008 года в Apache Software Foundation было подано предложение о преобразовании Empire-db в проект Apache Incubator. В июле 2008 года Empire-db была принята на инкубацию, и все права на Программное обеспечение были переданы Apache Foundation.
В октябре 2008 года Empire-db 2.0.4 был первым официальным выпуском инкубатора Apache, в котором все имена пакетов были изменены, чтобы они начинались с org.apache.empire.
Смотрите также
- Подключение к базе данных Java (JDBC)
- Объектно-реляционное отображение
- Спящий режим
- iBATIS
- TopLink
- Стойки Apache