powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Долгий запрос, или в чем все-таки дело
17 сообщений из 17, страница 1 из 1
Долгий запрос, или в чем все-таки дело
    #37788588
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть дерево, при нажатии на узел дерева выполняется запрос и справа в таблице отображаются данные из базы данных. Так вот, не могу понять что происходит, в одном из узлов находится 430 строчек, которые необходимо отобразить в табличке, цифра в принципе не большая, в конце концов это же не 4 тысячи, но! проблема в том, что с момента нажатия узла и момента отображения данных в таблице, проходит чуть ли не секунд 20, это ооооочень долго для таких объемов. Приведу код как я вставляю данные в таблицу:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
   DefaultMutableTreeNode select=(DefaultMutableTreeNode)jXTree2.getSelectionPath().getLastPathComponent();


         fr=(Grouptovar)select.getUserObject();

         bindingGroup2 = new org.jdesktop.beansbinding.BindingGroup();

         System.out.println("1");

                   
         tovarQuery =ConnectorDB.FrTreePUEntityManager.createQuery("SELECT c FROM Tovar c WHERE c.pathGroup LIKE ?1");
          System.out.println("2");
         tovarQuery.setParameter(1, fr.getPath()+"%");
         
          System.out.println("3");
   
         
  tovarList =org.jdesktop.observablecollections.ObservableCollections.observableList(new java.util.LinkedList(tovarQuery.getResultList()));
         
         
          System.out.println("4"); 
         
org.jdesktop.swingbinding.JTableBinding jTableBinding2 = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tovarList, jXTable3);
          
          
 System.out.println("5");

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding2 = jTableBinding2.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding2.setColumnName("#");
        columnBinding2.setColumnClass(Integer.class);
        columnBinding2.setEditable(false);
        


        columnBinding2 = jTableBinding2.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nameTovar}"));
        columnBinding2.setColumnName("Название товара");
        columnBinding2.setColumnClass(String.class);
        columnBinding2.setEditable(false);


        columnBinding2 = jTableBinding2.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cost}"));
        columnBinding2.setColumnName("Цена");
        columnBinding2.setColumnClass(String.class);
        columnBinding2.setEditable(false);
  bindingGroup2.addBinding(jTableBinding2);
         System.out.println("6");
        jTableBinding2.bind();
        
        bindingGroup2.bind();
         
                 System.out.println("7");


Поставила везде System.out.println(""); для проверки где же все-таки затыкается это все, но ничего подобного, в консоль очень быстро выводит все System.out.println(""); от 1 до 7, а данные только спустя время. Что я делаю не так, или вообще что происходит? Подскажите пожалуйста. Спасибо
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789465
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите советом, очень нужно
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789494
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С базой данных хорошо бы работать через SwingWorker. Но это на будущее.
Биндинги каждый раз пере-создаются?
Не пора ли познакомиться с профайлером? Так как он уже давно входит в стандартую поставку JDK, то стоит, наверное, узнать как им пользоваться?
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789530
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczС базой данных хорошо бы работать через SwingWorker. Но это на будущее.
Биндинги каждый раз пере-создаются?
Не пора ли познакомиться с профайлером? Так как он уже давно входит в стандартую поставку JDK, то стоит, наверное, узнать как им пользоваться?
да, каждый раз при нажатии на узел дерева, вызывается тот кусок кода, который я выслала. про профайлеры не в курсе, дайте ссылочку на примеры. спасибо что откликнулись, а то я уже вся извелась тут
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789538
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczС базой данных хорошо бы работать через SwingWorker. Но это на будущее.
Биндинги каждый раз пере-создаются?
Не пора ли познакомиться с профайлером? Так как он уже давно входит в стандартую поставку JDK, то стоит, наверное, узнать как им пользоваться?
и кстати, я со свинг воркером работала, перед началом того куска кода который я выслала, я добавляла:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  SwingWorker worker = new SwingWorker() {
            @Override
            public String doInBackground() {
                jXTable1.setEnabled(false);
                jProgressBar1.setVisible(true);
                jProgressBar1.setIndeterminate(true);
........
мой кусок кода приведенный выше
.......
                jProgressBar1.setIndeterminate(false);
                jProgressBar1.setVisible(false);
                jXTable1.setEnabled(true);
                return "done";
            }
        };
        worker.execute();


но эффекта это не дало, может я конечно не так использую, не знаю даже
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789559
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTда, каждый раз при нажатии на узел дерева, вызывается тот кусок кода, который я выслала. про профайлеры не в курсе, дайте ссылочку на примеры. спасибо что откликнулись, а то я уже вся извелась тут
http://habrahabr.ru/post/61857/
http://habrahabr.ru/post/73032/
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789566
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTи кстати, я со свинг воркером работала, перед началом того куска кода который я выслала, я добавляла:
но эффекта это не дало, может я конечно не так использую, не знаю даже
Во-первых это, скорее всего, не имеет отношения к вашей проблеме.
Во-вторых, да. Вы его совсем не правильно используете.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
new SwingWorker(){

doInBackground(){
 tovarQuery =ConnectorDB.FrTreePUEntityManager.createQuery("SELECT c FROM Tovar c WHERE c.pathGroup LIKE ?1");
 tovarQuery.setParameter(1, fr.getPath()+"%");
  return org.jdesktop.observablecollections.ObservableCollections.observableList(new java.util.LinkedList(tovarQuery.getResultList()));
}

done(){
   tovarList = get();
   //Вся работа со Swing классами здесь
}

}
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789569
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTда, каждый раз при нажатии на узел дерева, вызывается тот кусок кода, который я выслала.
Биндинг, обычно, создаётся один раз. Потом используется. Данные поменяли - через биндинг обновился UI.
Но у вас там, вероятно, разные таблицы на все узлы.
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789617
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJulTда, каждый раз при нажатии на узел дерева, вызывается тот кусок кода, который я выслала.
Биндинг, обычно, создаётся один раз. Потом используется. Данные поменяли - через биндинг обновился UI.
Но у вас там, вероятно, разные таблицы на все узлы.
нет, табличка одна, а вот когда по строке таблицы клацаю, тогда заполняются другие таблицы, но там проблем уже нет. огромное спасибо за советы. только вот еще вопрос один, как мне создать этот биндинг один раз, дело в том, что вначале таблица загружается пустой, она заполняется только тогда, когда пользователя клацнул по дереву, если я делаю в самом начале:
JTableBinding jTableBinding2 = SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tovarList, jXTable3);
то ему уже нужно чтобы tovarList был не нулевым, а он нулевой, опять-таки, до тех пор, пока пользователь не нажал по дереву
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789626
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать пустой список и завернуть в ObservableCollection. Потом вместо того чтобы пересоздавать заново, просто удалить всё и добавить новые объекты в список. ObservableCollection нотифицирует всех слушателей и они обновлят отображение.
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789630
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСделать пустой список и завернуть в ObservableCollection. Потом вместо того чтобы пересоздавать заново, просто удалить всё и добавить новые объекты в список. ObservableCollection нотифицирует всех слушателей и они обновлят отображение.
спасибо, пошла пробовать:)
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789723
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСделать пустой список и завернуть в ObservableCollection. Потом вместо того чтобы пересоздавать заново, просто удалить всё и добавить новые объекты в список. ObservableCollection нотифицирует всех слушателей и они обновлят отображение.
чет не получается у меня до конца разобраться, вначале подставляю пустую коллекцию:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    bindingGroup2 = new org.jdesktop.beansbinding.BindingGroup();
    tovarList =ObservableCollections.observableList(new java.util.LinkedList(java.util.Collections.emptyList()));
             
     jTableBinding2 = SwingBindings.createJTableBinding(AutoBinding.UpdateStrategy.READ_WRITE, tovarList, jXTable3);
           
        JTableBinding.ColumnBinding columnBinding2 = jTableBinding2.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding2.setColumnName("#");
        columnBinding2.setColumnClass(Integer.class);
        columnBinding2.setEditable(false);
.......
ЗДЕСЬ ЖЕ СВЯЗЫВАЮ
        bindingGroup2.addBinding(jTableBinding2);
        jTableBinding2.bind();
        bindingGroup2.bind();


далее идет нажатие на дерево, tovarList заполняется новыми данными:
Код: java
1.
2.
3.
tovarQuery =ConnectorDB.FrTreePUEntityManager.createQuery("SELECT c FROM Tovar c WHERE c.pathGroup LIKE ?1");     
 tovarQuery.setParameter(1, fr.getPath()+"%");
 tovarList =org.jdesktop.observablecollections.ObservableCollections.observableList(new java.util.LinkedList(tovarQuery.getResultList()));


но в табличке данные не показываются, почему? ведь я сделала его как ObservableCollections, что-то я явно делаю не так
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789735
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT
Код: java
1.
 tovarList =org.jdesktop.observablecollections.ObservableCollections.observableList(new java.util.LinkedList(tovarQuery.getResultList()));


но в табличке данные не показываются, почему? ведь я сделала его как ObservableCollections, что-то я явно делаю не так
Это вы называете удалить все элементы из коллеции и добавить новые?
Я имел ввиду
tovarList.clear()
tovarList.addAll(tovarQuery.getResultList())
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789769
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJulT
Код: java
1.
 tovarList =org.jdesktop.observablecollections.ObservableCollections.observableList(new java.util.LinkedList(tovarQuery.getResultList()));


но в табличке данные не показываются, почему? ведь я сделала его как ObservableCollections, что-то я явно делаю не так
Это вы называете удалить все элементы из коллеции и добавить новые?
Я имел ввиду
tovarList.clear()
tovarList.addAll(tovarQuery.getResultList())
сорри, это я ошиблась, не доглядела. вообщем все сделала как вы сказали, но данные не отображаются, сделала tovarList.size(), показало, что 430 записей есть, т.е. запрос отрабатывает, но данные не отображаются
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37789782
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTсорри, это я ошиблась, не доглядела. вообщем все сделала как вы сказали, но данные не отображаются, сделала tovarList.size(), показало, что 430 записей есть, т.е. запрос отрабатывает, но данные не отображаются
Вероятно вы биндинг недосоздали.
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37790963
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJulTсорри, это я ошиблась, не доглядела. вообщем все сделала как вы сказали, но данные не отображаются, сделала tovarList.size(), показало, что 430 записей есть, т.е. запрос отрабатывает, но данные не отображаются
Вероятно вы биндинг недосоздали.
вообщем что получается, у меня все работает хорошо до тех пор, пока я не нажимаю отсортировать по какой-нибудь колонке, а как только нажала, снова при нажатии на узел начинаются дикие тормоза при отображении данных, что же это за хрень такая, никогда такого не было, всю жизнь выводила данные по тысячу строк, а сейчас такие тормоза
...
Рейтинг: 0 / 0
Долгий запрос, или в чем все-таки дело
    #37791411
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это да! Вообщем проблема решилась когда я перешла на более старую версию java 1.6, а вот на java 1.7 все по-прежнему дико тормозит. Интересно все-таки, в чем же причина.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Долгий запрос, или в чем все-таки дело
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]