Альтернативные технологии доступа к БД в Java

Несмотря на то, что фактически любое обращение к БД можно осуществить с попощью технологии JDBC, кодируя запросы напрямую в исходном коде приложения, такой подход обладает как рядом достоинств так и рядом недостатков.

К достоинствам относятся:

  • Полный контроль над кодом доступа к БД разработчиком
  • Возможность использовать нестандартный SQL, сложным образом оптимизировать запросы
  • Подход не требует никаких нестандартных библиотек, прост в установке и настройке
  • Простота освоения. JDBC API является лишь тонкой обёрткой над SQL и по сути почти полностью семантически идентичен другим промышленным стандартам, таким как ODBC и ADO.Net
  • Относительно высокая скорость работы конечного приложения. Что требует однако грамотного использования SQL

 

К недостаткам относятся:

  • Огромная дублируемость кода, так как код для доступа к БД в большинстве случаем является однотипным, а его относительно количество может доходить в типичных информационных системах до 70%
  • Высокая вероятность допущения ошибки при кодировании. Ошибки тяжело обнаруживать, так как язык SQL – фактически интерпретируемый и компилятор Java не может проверить правильность генерации запросов.
  • Низкая скорость разработки, так как приходиться аккуратно писать большое боличество однотипного кода.
  • Необходимость знания прикладными разработчиками языка запросов SQL, для того чтобы составлять запросы грамотно и эффективно.
  • При недостаточно тщательном написании запросов производительность приложения резко снижается.
  • Сложность внесения изменений, из-за большого количества дублироемого интерпретируемого кода.
  • Зависимость от конкретного диалекта СУБД.

 

 

Для борьбы с вышеуказанными недостатками применяются различные подходы. Все они в общем случае принимают вид веделяемого архитектурного слоя, отвечающего за работу с данными Data Access Layer (DAL). Это может быть DAL выделенный в процессе создания приложения и созданный полностью трибуты разработчика. Однако, так как задача организации доступа к данным явзяется достаточно типовой, на рынке (в том числе Open Source и FreeWare) представлено большое количество библиотек и каркасов (framework), позволяющих организовавыть DAL, основываясь на уже существующих продуктах. Это позволяет резко повысить скорость РАЗРАБОТКИ (- не работы приложения!!) и как следствие сократить её стоимость. Среди представленных каркасов существуют как основанные на стандартах, таких как JDO (Java Data Object), EJB (Enterprise Java Beans), так и нестандартные формально, то в тоже время настолько широко используемые, что являются стандартами де-факто. К последним относятся Hibernate, iBATIS и многие другие.

 

Указанные средства позволяют автоматически преобразовывать данные из реляционного представления, удобного для хранения в реляционных СУБД в объектную форму, удобную для использования в ООП и объектных языках (как например Java). Такой подход называется Object Relationship Mapping (ORM).