Это нужно для того, чтобы твиг не запрашивал дополнительно выводимое поле "один ко многим"?

@ (для чего не нужно создавать ни какой библиотеки) id у сущности (класса). Исключение только для ManyToMany, где не требуется создавать сущности (класса).AbstractEntity ?
Это значит, что каждый раз вызывая этот метод, вы будете делать обращение к БД.
flush доктрины нужны вызывать только тогда, когда вы готовы изменить данные в БД.
Например подготовили все сущности нужными данными, а затем выполнили flush. + это так же автоматом оборачивается всё одной транзакцией, и если в середине запроса произойдёт ошибка, то откатятся все изменения и не останутся битые данные.
В данном случае, судя по вашему методу, вместо того, чтобы вставить за раз 2440 строк или разбить по 100-200 штук, вы вероятно вставляет по 1 строчки, а это будет 2440 запросов к бд.
Посмотрите как в примере используются flush(), там все действия на модификацию БД вынесении в сервис *handler (в папке Model/blabla/UseCase), там сначала выполняются все манипуляции с сущностями, а потом и только потом в самом самом конце вызывается flush.