Как сохранить сеанс Hibernate открытым, пока страница не будет отображена - PullRequest
1 голос
/ 09 июня 2010

У меня следующая проблема:

  • Я использую Oracle ADF для просмотра и контроллера моего приложения.
  • С OpenSessionInViewFilter я перехватываю запрос и открываюсеанс Hibernate, и он закрывается, как только заканчивается метод bean-компонента.

Мне нужно, чтобы сеанс оставался открытым до тех пор, пока страница не будет отрисована, потому что в моем JSP y используются атрибуты lazyобъект, который я загружаю из БД.

Например:

Когда я вхожу в index.jspx, выполняется indexBean # main ():

public class IndexBean{
    private DBObject myDBObject;
    public String main(){
        this.myDBObject = this.myDAO.loadObjectFromDB();
        return null;
    }
}

в индексе.jspx У меня есть:

...
<af:inputText value="#{myDBObject.lazyAttribute}" />
...

Мне бы хотелось, чтобы сессия Hibernate оставалась открытой до тех пор, пока не будет обработан af: inputText.

Возможно ли это?Как?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 23 июня 2010

Наконец-то я решил свою проблему.

OpenSessionInViewFilter работал правильно.

Возникла проблема с компонентом <af:table>, который я использовал ... Странно было то, что <af:table> создает новый запрос. Этот новый запрос закрывался и создавался новый сеанс Hibernate.

0 голосов
/ 09 июня 2010

Я бы посоветовал вам отсоединить ваш вид от вашей модели и устранить ленивую загрузку.Дайте странице все данные, которые ей нужны, прежде чем она будет отображена.Если получение дополнительных данных действительно сильно сказывается на производительности, подумайте о том, чтобы перепроектировать приложение, чтобы представить эти данные отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...