Антипаттерн orisnull: коварство иллюзорной простоты
День 4 / / Зал 3 / RU /Есть мнение, что фреймворки наподобие Hibernate и Spring Data создают абстрацию над базой данных, которая сразу из коробки работает идеально. Но идеально не работают даже сами базы данных. Даже когда между ними и приложением нет ничего, кроме SQL.
Например, в случае необходимости получить данные из базы по динамическому фильтру часто пишут запросы вида : where user.name = :name or :name is null. Из-за комбинации удобства и неочевидности сколько проблем с производительностью это удобство создает, запросы такого вида спонтанно «самозарождаются» в любом проекте и продолжают появляться там, даже когда эти запросы пару раз положили на прод.
О таких запросах и о том, как кодогенерация помогает свести ущерб от них к минимуму, мы и поговорим.