Так Метапрограммирование - идея, что можно изменить классы/объекты во времени выполнения, введя новые методы и свойства. Я знаю его пользу для разработки платформы; работа с Grails и та платформа добавляют набор методов к Вашим классам во времени выполнения. У Вас есть свойство имени на Пользовательском объекте и bamm, Вы ввели findByName метод во времени выполнения.