Tuesday, January 18, 2011

Выбор ORM.

Так получилось, что рано или поздно нужно использовать persistence, что привело к необходимости искать подходящую ORM-технологию. PM предложил использовать openJPA. Но, думаю, будет полезно разместить здесь небольшой обзор существующих ORM-решений. Скорее всего буду возвращаться к этому посту и периодически обновлять его.

1. Чистый SQL. Есть люди, которые утверждают, что никакой ORM не нужен, что чистый SQL работает намного быстрее. На мой взгляд, утверждение весьма спорное в силу того, что:
a) не у всех есть достаточный опыт в SQL для разработки устойчивых, масштабируемых систем.
b) ряд ORM технологий допускают native - запросы к базам.
c) ряд ORM технологий инкапсулируют многочисленные native настройки, а также возможность эти самые native настройки менять напрямую.
d) в ряде случаев, опять-таки если не знать некоторые тонкие настройки производительность будет даже хуже, чем при использовании ORM-решения.

2. Hibernate: пишут, что это де-факто стандарт. Хорошая документация. Есть порт для .NET. Пока не проверял, но пишут, что Hibernate одно из наилучших в плане производительности решений. Опыт работы с Hibernate часто является ключевым требованием при приеме на работу. Распостраняется согласно LGPL.

3. Apache openJPA. Открытая реализация JPA стандарта от Apache. На удивление хорошая и своевременная документация. Есть много примеров.

4. Apache iBatis. Вообще не имеет ничего общего со стандартом JPA. Хороший выбор для фанатов SQL.

5. Apache Cayenne. Еще одно JPA-решение. Пока не выяснил, в чем принципиальное отличие от openJPA.

Линки по теме:
1. Сравнение Hibernate, OpenJPA и EclipseLink.
2. Stackoverflow тред по теме.

No comments:

Post a Comment