Jawa / Говнокод #7993 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
final QOrder qSub = new QOrder("qSub");
final Predicate[] filters = getFilters(qSub, null, null);
		
if (filters.length > 0) {
	// conditions.add(Arrays.asList(filters));   // Do not do this. 
		
	// The subquery is here so that MySQL doesn't use the wrong index for
	// ORDER BY... LIMIT if we directly add the filter by custid/custdept
	// to the list of filters, which will make the search very slow.
	// Well, perhaps an ugly workaround, and we might want to adjust
	// the custid/custdept index in the future... somehow.
	conditions.add(q.id.in(QueryDsl.subFrom(qSub).where(filters).list(qSub.id)));
}

Обход косяков конкретной СУБД на уровне ORM. Абстракция, что и говорить.

Запостил: lucidfox lucidfox, (Updated )

Комментарии (6) RSS

  • >>Обход косяков конкретной СУБД
    Был у меня опыт разработки проги поддерживающей MySQL, MSSQL, Oracle, с использование Hibernate. И могу точно сказать, что Hibernate не избавит вас от необходимости опускаться до развилок по engine. В сложных запросах это просто необходимо, и обычно пишутся raw-sql для каждого engine. У нас это касалось подсистемы сборки точек и запросов построения графических отчетов.
    Ответить
  • любая ОРМ - как и положено любому адаптеру-обертке - тормозное говно с кучей ненужных промежуточных действий, по определению.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8