Как передать ResultSet с сервера клиенту?

Я хочу передать ResultSet с сервера клиенту, а затем поместить все свои значения в JTable (он уже находится в клиенте). Я хочу использовать JSonObject, но я не понимаю, нужно ли мне сериализовать его, чтобы отправить, или мне нужно напрямую отправить его клиенту. Лучше использовать JSonObject или есть другой способ?


person salvo9415    schedule 21.11.2015    source источник
comment
Вы можете захотеть передать данные в ResultSet обратно клиенту, но я не думаю, что вы хотите отправить фактический объект ResultSet, или? Пожалуйста уточни.   -  person ControlAltDel    schedule 22.11.2015


Ответы (2)


Отправка объекта через TCP-соединение возможна (и довольно проста). Однако указанный объект должен быть экземпляром класса, который implements Serializable. ResultSet является интерфейсом и не расширяет Serializable.

Если ResultSet расширил Serializable (и объяснение, почему это не так, показано во второй ссылке), то его можно было бы отправить через ObjectOutputStream.. Если бы это был класс, а не интерфейс, его можно было бы расширить (при условии, что это не окончательный класс, и у него есть по крайней мере один незакрытый конструктор), и тогда расширение может реализовать Serializable. Опять же, это не так.

В результате вместо этого вы должны прочитать значения из ResultSet на сервере, а затем отправить их вместо отправки самого ResultSet.

person Alexander Guyer    schedule 22.11.2015

Вы никогда не должны возвращать ResultSet клиенту, клиенты не должны знать, какая обработка выполняется на сервере (в этом случае мы можем знать, что выполняется какая-то операция с БД, точка абстракции теряется). Лучшим подходом было бы преобразовать ResultSet в коллекцию и вернуть коллекцию (например, ArrayList) клиенту.

person Akash Babu    schedule 22.11.2015