Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Сериализация объектов

JDBC API

Альтернативные подходы к Persistence

 

Прежде чем переходить к рассмотрению конкретного ORM, кратко рассмотрим альтернативные подходы, которые можно применять для доступа к данным, в том числе в технологии Java. К этим подходам относятся:

  • «Ручное» кодирование доступа к данным, напрямуя используя низкоуровневый JDBC API и задавая SQL запросы непосредственно в коде программы.
  • Сериализация объектов (Object Serialization).
  • Использование Entity EJB (Enterprise Java Beans) и CMP (Container Managed Persistence).
  • Объектно-ориентированные СУБД.

 

 

Как уже было рассмотрено в предыдущей лекции, использование подхода, при котором доступ к данным осуществляется напрямую из бизнес-кода приложения связан с определёнными трудностями. Тем не менее, такой подход всё же может быть оправдан из-за своей крайней простоты и дешевизны для относительно простых систем. Обусловлено это в первую очередь отсутствием какой либо дополнительной инфраструктуры, требующей изучения – от программиста требуется всего лишь знать несколько крайне простых интерфейсов (Connection, Statement, PreparedStatement, ResultSet), которые явдяются давно устоявшимися и сильно похожи на другие промышленные стандарты, такие как ODBC или ADO; а так же знание SQL, что так же является широкораспространённым среди разработчиков. Однако, при возрастании размеров системы, количество кода (в том числе дублируемого) начинает резко возрастать и использование такого подхода становиться крайне нееффективным с точки зрения трудозатрат как на первоначальное создание системы, так и на последующую её поддержку (внесние изменений, локализация и исправление ошибок).

Почти что все современные объектные среды (включая Java и.Net) поддерживают механизм сериализации объектов – т.е. представление графа объектов в памями в виде потока байт и возможность сохранения графа на диск или передача его по сети. При этом граф может представляться как в закрытом двоичном формате, так и в виде XML..Net поддерживает сериализацию в XML стандартными классами, для Java существуют библиотеки сторонних производителей (в том числе бесплатные и Open Source). Сериализованный граф объектов можно в любой момент загрузить и восстановить в памяти. Этот подход работает относительно быстро и просто и прекрасно подходить для сохранения небольших графов объектов, таких как стуктур конфигураций (конфигурационные файлы часто представляются в памяти так же в объектном виде) или небольших справочников, котрые не требуют много места в памяти при полной загрузке.

Проблемы возникают при попытке использовать такой подход для сохранения относительно больших структур, для представляения которых требуется большое количество ОП. Это обусловлено тем, что сериализация не позволяет загрузить лишь часть графа объектов. Т.е. для доступа к любому объекту в память необходимо загрузить весь граф полностью. По понятным причинам, при большом количестве данных, такой подход оказывается неприемлимым.

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

<== предыдущая лекция | следующая лекция ==>
Навигация по связям | Entity EJB
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 317; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.