Продолжается подписка на наши издания! Вы не забыли подписаться?

Java Data Objects – механизм долговременного хранения объектов в Java

Автор: Петр Михеев

Введение
Особенности JDO
Архитектура JDO
Создание хранимых классов
Расширение хранимых классов
Установка соединения с хранилищем данных
Операции над экземплярами хранимых классов
Выборка экземпляров хранимых классов
Заключение

Любой разработчик Java-программ (да и не только Java), занимавшийся реализацией доступа к данным, знает, насколько это нелегко. Приходится тратить много времени на организацию взаимодействия с различными видами хранилищ, используя при этом самые разнообразные технологии, а также вручную создавать объектное представление данных. Технология Java Data Objects (JDO) позволяет использовать унифицированный объектный интерфейс к хранилищам данных и дает возможность разработчикам сосредоточится на реализации логики системы, а не на создании объектного представления разнородных данных. В статье рассматриваются сценарии применения и архитектура JDO, а также приводятся примеры программ, демонстрирующих основные особенности технологии.

Введение

В настоящее время механизм доступа к данным в приложениях, как правило, реализуют сами разработчики, причем тратят на это немало сил и времени. В приложениях на языке Java обычно используется технология Java Database Connectivity (JDBC), которая позволяет работать с РСУБД. Для данных, которые располагаются в других типах хранилищ, например, в файловой системе или в системах типа Enterprise Resource Planning (ERP), необходимо использовать совершенно другие интерфейсы и заново переписывать весь код, обеспечивающий доступ к данным.

Одним из способов оптимизации механизма доступа к данным является объектное представление хранимой информации, основанное на использовании объектов-сущностей. Информационное наполнение объектов-сущностей обычно является “долгоживущим”, и поэтому иногда их называют хранимыми объектами (persistent objects или, соответственно, persistent classes – хранимые классы). Этот тип объектов может отражать объекты реального мира или некоторую системную информацию. Применяя хранимые объекты, разработчики инкапсулируют код, работающий с данными, и остальная часть приложения становится, таким образом, практически независимой от используемого хранилища данных. На практике такое решение требует программирования классов Java для представления на уровне приложения разнородных данных, которые хранятся в хранилищах различных типов.

Для упрощения создания классов, обеспечивающих взаимодействие между приложениями и источниками данных, компанией SUN Microsystems был предложен стандарт под названием Java Data Objects (JDO), описывающий механизм прозрачного доступа к разнородным источникам данных на основе концепции их объектного представления в Java. Спецификация JDO предлагает использовать стандартный интерфейс, с помощью которого приложение может осуществлять хранение, выборку и поиск информации, получая результаты в виде графов обычных Java-объектов. При этом разработчикам Java не приходится тратить время на создание специального кода, обеспечивающего взаимодействие с хранилищем информации, и можно сконцентрировать усилия на проектировании объектно-ориентированной модели данного приложения.

Таким образом, JDO дает возможность работать с данными, используя для доступа к информации и работы с ней единый общепринятый и стандартизированный интерфейс, а не специфический механизм доступа к конкретной БД. Для этого стандарт JDO вводит понятие менеджера долговременного хранения объектов, который фактически представляет собой реализацию механизма управления взаимодействием объектов с хранилищем данных. Хранилищем данных может являться любая система, управляющая доступом к информации и размещенная вне виртуальной машины, выполняющей Java-приложение. Примерами хранилищ данных являются системы управления базами данных (реляционные, объектные, иерархические и т.д.), системы типа ERP, файловая система. Роль менеджера долговременного хранения объектов состоит в установлении соответствия между объектами в памяти и системой долговременного хранения. Такой подход позволяет воспользоваться при моделировании сущностей преимуществами объектной технологии. Необходимость введения такого механизма становится очевидной, как только сложность системы достигает определенного уровня, и ручная реализация долговременное хранение объектов становится нереальным. JDO способствует не только повышению производительности труда программистов, но и обеспечивает более высокое качество программного обеспечения. Исчезает необходимость создания программ, обслуживающих взаимодействие с конкретной СУБД, а вместе с этим снижается и число ошибок кодирования. Более того, реализация доступа к данным через объекты позволяет разработчикам поднять уровень повторного использования кода, что также сокращает время, необходимое для разработки приложений.

 

..............

 

Заключение

В этой статье была подробно описана технология Java Data Objects и показаны подходы к ее практическому применению. Несмотря на то, что некоторые моменты, такие как поддержка уникальности объектов, описание языка JDO Query Language, уровни изоляции транзакций и некоторые другие, остались за рамками статьи, представленной информация вполне достаточно для того, чтобы начать применять JDO на практике.

Технологию JDO в виду ее простоты и удобства рекомендуется использовать в серьезных и больших проектах. При этом нельзя забывать о том, что данная технология, предназначенная для предоставления прозрачного и централизованного доступа к хранимой информации, не учитывает специфики конкретных хранилищ данных, и работает с любым хранилищем данных в рамках общей парадигмы долговременного хранения объектов. В тех случаях, когда необходимо часто выполнять сложную логику на стороне хранилища данных, использовать его особенности и передавать приложению только результат, а не всю обрабатываемую информацию (например, вызывать хранимые процедуры в реляционных базах данных), использование JDO оказывается нецелесообразным.

Спецификация JDO рассчитана не только на разработчиков приложений, но и на производителей промежуточного программного обеспечения, обеспечивающего соответствие между унифицированным объектным представлением данных и конкретными хранилищами. И хотя, сегодня подобных адаптеров ресурсов еще не слишком много, можно ожидать, что в ближайшем будущем они появятся практически для всех хранилищ данных, например, как это произошло с драйверами JDBC. Таким образом, Java Data Objects займет достойное место в ряду других Java-технологий.

"С полным содержанием данной статьи можно ознакомиться в печатной версии журнала"

Copyright © 1994-2016 ООО "К-Пресс"