Проверка на повторяющуюся информацию, запрошенную в БД

Имеется приложение, которое отображает результат селекта из таблицы, которая находится в базе данных Оракл. Каждый три секунды запрос повторяется и в приложении вновь появляются те же самые записи. Напрягает, что таблица моргает каждые 3 секунды когда обновляет строки, а данные в них те же. Хочется чтобы таблица автоматически обновлялась в приложении только тогда, когда результат селекта будет с изменениями. Вот приложение (запрос вверху приложения): введите сюда описание изображения

так же прикладываю код в котором происходит запрос к базе данных и наполняется таблица JTable - DefaultTableModel с результатами селекта. Как сделать проверку на то, что данные те же и не надо заполнять Jtable теми же записями каждые 3 секунды, а только если будет хотя бы одно изменение в этих же трёх секундах? В таблице БД у каждой строки свой уникальный id, который я здесь не использовал..

static void select() {
        try {               
                PreparedStatement st = connect.prepareStatement(
                    Gui.JStatement.getText() + where_clause +
                    " AND fl_text LIKE '" + Gui.likeTextField.getText() +
                    "' ORDER BY " + order_by + " " + sorting);

                ResultSet rs = st.executeQuery();
                while (rs.next()) {                       
                    amount = Gui.model.getRowCount() + 1;                        
                    String fl_date = rs.getString("fl_date");
                    String fl_text = rs.getString("fl_text");

                        Object[] row = new Object[]{
                                amount,
                                fl_date,
                                fl_text
                        };
                        Gui.model.addRow(row);
                }
                st.close();

Ответы (1 шт):

Автор решения: mrprogre

Сделано 2 запроса max(id) к базе данных с разницей в 1000 миллисекунд и если max(id) не равны - выполняю нужный код.

                Statement statement = connect.createStatement();
                String sql = "select max(fl_id) from fs_log where fl_date > sysdate - " + where_clause;
                ResultSet rs_id = statement.executeQuery(sql);
                if (rs_id.next()) {
                    max = rs_id.getInt(1);
                } statement.close();

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                Statement statement2 = connect.createStatement();
                String sql2 = "select max(fl_id) from fs_log where fl_date > sysdate - " + where_clause;
                ResultSet rs_id2 = statement2.executeQuery(sql2);
                if (rs_id2.next()) {
                    max2 = rs_id2.getInt(1);
                } statement2.close();

                         if(max != max2){код по заполнению}
→ Ссылка