Недавно в голове появились мысли, собрать в кучу все (хоть и небольшие) знания по SOQL и написать API для построения запросов на основе объектной модели (на подобии LINQ в .net), как вдруг - наткнулся на ссылку http://code.google.com/p/apex-lang/. Оказывается некий Richard уже давно всё придумал и реализовал (2010 год). Только посмотрите:
всем привычный SOQL
SELECT name FROM account WHERE employees < 10
SOQL Builder
new al.SoqlBuilder()
.selectx('name')
.fromx('account')
.wherex(new al.FieldCondition('employees').lessThan(10))
.toSoql();
по моему это прекрасно)
Пусть для небольших запросов это накладно, но для запросов с динамическими условиям это просто чудо (можно динамически строить сколь угодно сложные условия и не сидеть часами в отладке по причине забытой скобки, кавычки, экранизации и др.)
Вот ссылка на статью блога автора, где он показывает достоинства SOQL Builder http://richardvanhook.com/2010/04/11/soql-builder/.
Ко всему прочему его "библиотека" содержит кучу полезных классов по работе с массивами, стандартными типами данных, email, json, page, url и др. Автор предлагает свой вариант пагинации данных http://richardvanhook.com/2009/08/03/visualforce-pagination-with-apex-lang/
ссылка на последнюю версию http://apex-lang.googlecode.com/files/apex-lang-1.18.zip
Может кто-нибудь уже пользовался его наработками, делитесь впечатлениями.
Недавно в голове появились мысли, собрать в кучу все (хоть и небольшие) знания по SOQL и написать API для построения запросов на основе объектной модели (на подобии LINQ в .net), как вдруг - наткнулся на ссылку [url]http://code.google.com/p/apex-lang/[/url]. Оказывается некий Richard уже давно всё придумал и реализовал (2010 год). Только посмотрите: всем привычный SOQL [code] SELECT name FROM account WHERE employees < 10 [/code] SOQL Builder [code] new al.SoqlBuilder() .selectx('name') .fromx('account') .wherex(new al.FieldCondition('employees').lessThan(10)) .toSoql(); [/code] по моему это прекрасно) Пусть для небольших запросов это накладно, но для запросов с динамическими условиям это просто чудо (можно динамически строить сколь угодно сложные условия и не сидеть часами в отладке по причине забытой скобки, кавычки, экранизации и др.) Вот ссылка на статью блога автора, где он показывает достоинства SOQL Builder [url]http://richardvanhook.com/2010/04/11/soql-builder/[/url]. Ко всему прочему его "библиотека" содержит кучу полезных классов по работе с массивами, стандартными типами данных, email, json, page, url и др. Автор предлагает свой вариант пагинации данных [url]http://richardvanhook.com/2009/08/03/visualforce-pagination-with-apex-lang/[/url] ссылка на последнюю версию [url]http://apex-lang.googlecode.com/files/apex-lang-1.18.zip[/url] Может кто-нибудь уже пользовался его наработками, делитесь впечатлениями.
Интересно.
я думал, что LINQ со своим SQL-подобным декларативным синтаксисом тем и хорош, что позволяет кверить объекты как SQL.
Был рад, когда увидел синтаксис SOQL.
а теперь выясняется, то более традиционный синтаксис с последовательным вызовом методов дает большие преимущества...
нужно будет более внимательно это изучить.
Интересно. я думал, что LINQ со своим SQL-подобным декларативным синтаксисом тем и хорош, что позволяет кверить объекты как SQL. Был рад, когда увидел синтаксис SOQL. а теперь выясняется, то более традиционный синтаксис с последовательным вызовом методов дает большие преимущества... нужно будет более внимательно это изучить.
Если вы говорите об этом, значит никогда не пользовались workbench )
Ну а само решение оччень полезное)
Если вы говорите об этом, значит никогда не пользовались workbench ) Ну а само решение оччень полезное)
[quote="dlisovsky"]Недавно в голове появились мысли, собрать в кучу все (хоть и небольшие) знания по SOQL и написать API для построения запросов на основе объектной модели (на подобии LINQ в .net), как вдруг - наткнулся на ссылку [url]http://code.google.com/p/apex-lang/[/url]. Оказывается некий Richard уже давно всё придумал и реализовал (2010 год). Только посмотрите: всем привычный SOQL [code] SELECT name FROM account WHERE employees < 10 [/code] SOQL Builder [code] new al.SoqlBuilder() .selectx('name') .fromx('account') .wherex(new al.FieldCondition('employees').lessThan(10)) .toSoql(); [/code] по моему это прекрасно) Пусть для небольших запросов это накладно, но для запросов с динамическими условиям это просто чудо (можно динамически строить сколь угодно сложные условия и не сидеть часами в отладке по причине забытой скобки, кавычки, экранизации и др.) Вот ссылка на статью блога автора, где он показывает достоинства SOQL Builder [url]http://richardvanhook.com/2010/04/11/soql-builder/[/url]. Ко всему прочему его "библиотека" содержит кучу полезных классов по работе с массивами, стандартными типами данных, email, json, page, url и др. Автор предлагает свой вариант пагинации данных [url]http://richardvanhook.com/2009/08/03/visualforce-pagination-with-apex-lang/[/url] ссылка на последнюю версию [url]http://apex-lang.googlecode.com/files/apex-lang-1.18.zip[/url] Может кто-нибудь уже пользовался его наработками, делитесь впечатлениями.[/quote] Cпасибо очень интересно!
Присоединяюсь! Очень интересная информация. Неприменно воспользуюсь в работе!
Спасибо!
Присоединяюсь! Очень интересная информация. Неприменно воспользуюсь в работе! Спасибо!
Был один проект, который использовал эту библиотеку. Лично мне эта библиотека не очень понравилась. Включает эта библиотека более 30 классов. И если вам в проекте нужно делать только простые селекты или селект в селекте это уж больно громоздко. Но каждый выбирает сам. Да и не делает эта библиотека ровным счетом ничего не возможного, что я не могу сделать руками.
[quote="Sergey Prichepo"]Может кто-нибудь уже пользовался его наработками, делитесь впечатлениями.[/quote] Был один проект, который использовал эту библиотеку. Лично мне эта библиотека не очень понравилась. Включает эта библиотека более 30 классов. И если вам в проекте нужно делать только простые селекты или селект в селекте это уж больно громоздко. Но каждый выбирает сам. Да и не делает эта библиотека ровным счетом ничего не возможного, что я не могу сделать руками.