Я хочу передать ResultSet с сервера клиенту, а затем поместить все свои значения в JTable
(он уже находится в клиенте). Я хочу использовать JSonObject
, но я не понимаю, нужно ли мне сериализовать его, чтобы отправить, или мне нужно напрямую отправить его клиенту. Лучше использовать JSonObject
или есть другой способ?
Как передать ResultSet с сервера клиенту?
Ответы (2)
Отправка объекта через TCP-соединение возможна (и довольно проста). Однако указанный объект должен быть экземпляром класса, который implements Serializable.
ResultSet
является интерфейсом и не расширяет Serializable.
Если ResultSet расширил Serializable (и объяснение, почему это не так, показано во второй ссылке), то его можно было бы отправить через ObjectOutputStream.
. Если бы это был класс, а не интерфейс, его можно было бы расширить (при условии, что это не окончательный класс, и у него есть по крайней мере один незакрытый конструктор), и тогда расширение может реализовать Serializable.
Опять же, это не так.
В результате вместо этого вы должны прочитать значения из ResultSet
на сервере, а затем отправить их вместо отправки самого ResultSet
.
Вы никогда не должны возвращать ResultSet клиенту, клиенты не должны знать, какая обработка выполняется на сервере (в этом случае мы можем знать, что выполняется какая-то операция с БД, точка абстракции теряется). Лучшим подходом было бы преобразовать ResultSet в коллекцию и вернуть коллекцию (например, ArrayList) клиенту.