【发布时间】:2014-07-24 13:39:32
【问题描述】:
我创建了一个 jtable,然后将我的数据库拖放到其中,因此它会自动将所有列生成到表中。
问题是,加载时间太长,大概二十秒。
有什么办法优化吗?
当我直接在 MySQL Workbench 上运行查询时,大约需要两秒钟。
生成代码的相关部分:
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
MyDbPUEntityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("MyDbPU").createEntityManager();
userQuery = java.beans.Beans.isDesignTime() ? null : MyDbPUEntityManager.createQuery("SELECT u FROM User u");
userList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : userQuery.getResultList();
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, userList, jTable1);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
columnBinding.setColumnName("Id");
columnBinding.setColumnClass(Integer.class);
columnBinding.setEditable(false);
columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nome}"));
columnBinding.setColumnName("Nome");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${sexo}"));
columnBinding.setColumnName("Sexo");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cpf}"));
columnBinding.setColumnName("CPF");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cidade}"));
columnBinding.setColumnName("Cidade");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${estado}"));
columnBinding.setColumnName("Estado");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${ndoc}"));
columnBinding.setColumnName("RG");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding =
jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${dataNasc}"));
columnBinding.setColumnName("Data Nascimento");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();
【问题讨论】:
-
查询需要多长时间?直接在数据库执行?
-
直接在Mysql Workbench上,大概需要两秒。
-
该表的一行大概有 34 列,我只在代码中显示我想要的那些,但我认为列数不是问题。你知道如果我使用 JDBC 代替生成代码,性能会大幅提升吗?
-
通过使用 org.jdesktop.beansbinding 没有机会改变一些东西
-
使用
SwingWorker,代表example。