Я пытаюсь найти хороший дизайн для приложения Spring / Hibernate. При создании такого приложения создается впечатление, что существует несколько важных решений.
Первое важное решение, по-видимому, заключается в том, где поставить границу сеанса / транзакции. Похоже, у меня есть 3 основных варианта: в качестве фильтра до того, как контроллеры даже будут вызваны, непосредственно под контроллерами на уровне сервисных вызовов и заполнены намного ниже бизнес-уровня в вызовах репозитория.
Мне кажется, что правильный вызов - это средний путь, но я не уверен. Я не хочу, чтобы мои транзакции открывались слишком долго, но в то же время я не хочу постоянно беспокоиться об отделенных объектах и ленивой загрузке в бизнес-логике. Тем не менее, есть некоторые недостатки. Например, бизнес-логике сложно выполнять удаленный вызов без удержания транзакции в течение нескольких секунд. Интересно, есть ли лучший способ?