2013-03-12 2 views
1

У меня есть метод getStudents для управляемого BackBean, я вызываю getstudents, который inturn делает вызов в базу данных и извлекает данные. Пользовательский интерфейс отображается правильно, но вызывает проблемы с производительностью, так как занимает слишком много времени для загрузки страницы. Пожалуйста, предложите мне, как справиться с этой проблемой производительности.Как повысить производительность при загрузке

+0

Сначала проверьте, выполняете ли вы только «запрошенные столбцы» или «выбирая целую таблицу», что даст вам ненужные данные, которые влияют на время загрузки страницы. Это только одна причина. На ваш код могут быть другие depennds – SRy

+0

@ SrinivasR: Я вызываю только нужные столбцы. В моем случае я просто получаю идентификаторы учеников. Этот метод getstudent используется на разных страницах .., а мой внешний компонент - сеанс. Каждый раз, когда этот метод getter называется, он будет звонить в DB, ​​который получает список студентов. – shreekanth

+1

Может быть, у вас нет правильного представления о bean scopes. В конструкторе bean-компонента, обработанном сессией, вызывается только один раз. Если вы выполняете этот вызов базы данных в конструкторе, данные, которые в сеансе будут загружены. Это не вызовет метод снова – SRy

ответ

3

Вы не должны делать бизнес-логику в методах getter. Вы должны инициализировать свой список в @PostConstruct метод или сделать отложенную загрузку в поглотителе:

private List myList; 

@PostConstruct 
public void init() { 
    // init my List 
} 

// getter and setter 

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

Смежные вопросы