Я думаю, что я должен ответить здесь еще и потому, что я начал использовать jooq полтора месяца назад, поэтому у меня есть некоторый опыт работы с ним.
Я хотел использовать такой инструмент, как jooq, потому что:
- ORM является излишним в моем текущем проекте (платформа распределенных вычислений для кластера), так как мне нужно читать и записывать только отдельные поля из базы данных, а не полные строки таблицы, а некоторые из моих запросов достаточно сложны, чтобы их не выполняли простые и легкие ORM.
- Я хотел, чтобы синтаксис автозаполнялся для моих запросов, чтобы мне не нужно было держать в уме всю мою БД.
- Я хотел иметь возможность писать запросы непосредственно на Java, чтобы компилятор мог проверять базовый синтаксис запросов при сборке.
- Я хотел, чтобы мои запросы были типобезопасными, чтобы я не мог случайно передать переменную одного типа там, где ожидается другой.
- Я хотел SQL, но я хотел, чтобы он был очень удобным и простым в использовании.
Что ж, с jooq я смог добиться всего этого. Мое главное требование заключалось в том, чтобы jooq обрабатывал достаточно сложные запросы (вложенные, с группировкой и т. д.). Это было выполнено.
Я также хотел иметь возможность выполнять запросы, используя как можно меньше строк кода, и смог достичь этого с помощью jooq fluent API, который позволяет выполнять вызовы, подобные jquery, для выполнения SELECT.
По пути использования jooq я сообщил об одной или двух ошибках. и надо сказать, что исправили их на удивление быстро.
Я также пропустил некоторые функции и снова Должен сказать, что почти все они у меня уже есть.
Что мне очень понравилось, так это то, что jooq теперь использует SLF4J для сообщения некоторых очень интересных данных о его производительности, а также для вывода фактических запросов, которые он построил. Это действительно помогло мне с отладкой.
Jooq даже генерирует артефакты Java для хранимых процедур, UDF и обновляемых наборов записей, которые я в настоящее время не использую.
Что важно, jooq прозрачно поддерживает DB2, Derby, H2, HSQLDB, MySQL, Oracle, PostGreSQL, SQLite, SQL Server, Sybase SQL Anywhere. По-моему, довольно обширный список.
У Jooq есть форум поддержки в группах Google, где Лукас день и ночь готов ответьте даже на самый глупый из моих вопросов.
Jooq поддерживает Maven, и это большое облегчение для меня, поскольку все мои Java-проекты основаны на Maven. Нам все еще не хватает плагина Maven для генератора, но это не важно, так как запуск генератора — это кусок пирога.
Написав свои запросы с помощью jooq, я внезапно обнаружил, что они стали действительно переносимыми, потому что я почти никогда не использовал в коде какие-либо специфичные для MySQL функции, поскольку jooq старается быть как можно более переносимым. Для тех, кто не может жить с такими особенностями, как я знаю, поддержка расширений SQL также находится в стадии разработки.
Чего, с моей точки зрения, не хватает jooq?
Что ж, не существует свободного API для операторов, отличных от SELECT. Это немного усложняет код и делает операторы UPDATE/DELETE более сложными для написания. Но я думаю, что это скоро будет добавлено. Только что реализовано в 1.5.9! Ха! Слишком быстро для меня ;)
И вот еще. У Jooq есть хорошее руководство, но... я не знаю. Может быть, я просто не понимаю его структуру или архитектуру... Когда я впервые начал использовать jooq, я открывал одну страницу за другой в поисках нужной мне функции. Например, попробуйте угадать, где в руководстве по jooq описаны операторы UPDATE и DELETE. , глядя на содержимое... Но я считаю, что это действительно субъективно. Я тоже даже не могу объяснить, что не так с мануалом с моей точки зрения. Когда я смогу, я опубликую билет или два;)
В ручном режиме также не очень удобно ориентироваться, поскольку в Trac нет автоматических ссылок «туда, туда и обратно».
Ну, для меня в Москве (Россия) страницы Trac также не открываются быстро, поэтому читать руководство немного скучно.
В руководстве также отсутствует хорошее описание архитектуры jooq для участников. Кажется, Jooq следует принципу проектирования по контракту, и когда я хотел узнать, как определенная функция реализована внутри, используя мой обычный Ctrl-Click на каком-то имени метода в IDE, я оказался в скучном интерфейсе без реализации;) Не то чтобы Я слишком умен, чтобы сразу начать улучшать jooq, но, безусловно, мне было бы интересно понять, как именно jooq устроен с нуля.
Жаль также, что мы не можем внести свой вклад в jooq manual. Я ожидал, что это будет в какой-то вики.
Что я также хотел бы улучшить, так это способ новости сообщаются. Я бы предпочел ссылку на руководство или примеры того, как работает та или иная новая функция.
ссылка на примечания к выпуску в руководстве — это всего лишь дорожная карта. Я думаю, я сделаю это сам завтра...
Jooq также имеет относительно небольшое сообщество в настоящее время, но я рад сообщить, что это не влияет на качество кода или способ введения новых функций.
Jooq действительно хороший проект. Я буду придерживаться его и для своих будущих проектов. Мне это и вправду нравится.
person
Vladislav Rastrusny
schedule
15.05.2011