Как сохранить чистые слои с помощью Hibernate / ORM (или других ORM ...)?
То, что я имею в виду под чистым разделением слоев, это, например, сохранение всего материала Hibernate в слое DAO .
Например, при создании большого CSV потока экспорта мы часто должны выполнять некоторые операции Hibernate, такие как evict, чтобы избежать OutOfMemory ... Заполнение выходного потока принадлежит представлению, но evict принадлежит ДАО.
Что я имею в виду, так это то, что мы не должны помещать операции выселения в интерфейс / службу, и мы не должны помещать бизнес-логику в DAO ... Итак, что мы можем делать в таких ситуациях?
Есть много случаев, когда вам нужно что-то делать, например, выселять, очищать, очищать, обновлять, особенно когда вы немного играете с транзакциями, большими данными или подобными вещами ...
Так как же вы сохраняете четкое разделение слоев с помощью инструмента ORM, такого как Hibernate?
Edit: то, что мне не нравится ни на работе, так это то, что у нас есть собственный абстрактный DAO, который позволяет сервису предоставлять критерий Hibernate в качестве аргумента. Это практично, но для меня в теории служба, которая называет это DAO, не должна знать критерий. Я имею в виду, что мы не должны каким-либо образом импортировать материалы Hibernate в логику бизнес / представление.
Есть ответ, простой или нет?