Мне кажется тут есть загвоздка даже не со стороны ResultSet и его имплементации а со стороны того что так делать не надо
Это важно — юзать нужные классы для того для чего они предназначены
ничего добавить в ResultSet нельзя
удаляя из него — удаляешь и в базе (если не rollback + если емплементация вообще это поддерживает)
Но еще раз повторюсь — не нагружай RS тем что он не должен делать — напиши свой класс
И не думай про производительность — ты пишешь не на том языке
Ява позволяет думать про архитектуру вцелом — и именно это позволяет уменьшить workarounds в будущем и выиграть эту самую производительность
Re[3]: JDBC (Oracle), ResultSet - удаление...
От:
Аноним
Дата:
26.11.01 04:53
Оценка:
Спасибо за ответ.
Но все-таки кое с чем позволю себе не согласиться.
F>ничего добавить в ResultSet нельзя
как ??
Может это не правильно с точки зрения эстетики,
но возможность такая имеется (в ResultSet).
F>Но еще раз повторюсь — не нагружай RS тем что он не должен делать — напиши свой класс F>И не думай про производительность — ты пишешь не на том языке F>Ява позволяет думать про архитектуру вцелом — и именно это позволяет уменьшить workarounds в будущем и выиграть эту самую производительность
Это все красиво, но:
Представим себе достаточно большую базу.
В ней две таблицы:
Account (СЧЕТА) 1.000.000
Entry (ПРОВОДКИ) 10.000.000
Хочу посмотреть все счета, по которым за последний месяц
были проводки на сумму больше 100000руб.
Такой запрос (поле СУММА в ПРОВОДКАХ не индексированно)
может выполняться дастаточно долго.
И в случае, если в получившемся списке я захочу произвести с какими-либо счетами операции,
мне необходимо будет каждый раз заново выполнить запрос.
Хочу заметить. что пример является реальным.
А с точки зрения красивости — оно конечно...
А>Представим себе достаточно большую базу. А>В ней две таблицы: А>Account (СЧЕТА) 1.000.000 А>Entry (ПРОВОДКИ) 10.000.000 А>Хочу посмотреть все счета, по которым за последний месяц А>были проводки на сумму больше 100000руб. А>Такой запрос (поле СУММА в ПРОВОДКАХ не индексированно) А>может выполняться дастаточно долго. А>И в случае, если в получившемся списке я захочу произвести с какими-либо счетами операции, А>мне необходимо будет каждый раз заново выполнить запрос.
А>Хочу заметить. что пример является реальным. А>А с точки зрения красивости — оно конечно...
Немного не понятно
1. Кто мешает добавить индекс на те поля по которым идет поиск
2. Зачем нужно начинать поиск по новой? Вытащили строку из списка — положили данные либо в базу либо в свой список, идем дальше. Как прошли весь список — flush-нули свой новый список и коммит
?
а вот пример который я привел — наверное не совсем подходящий.
соответственно и ваш ответ для меня был не совсем понятен...
возьмем проще и нагляднее.
две таблицы:
Документ (doc), Клиент (client). (обязательная связь client->doc)
просматриваю список всех клиентов (select ... from client,doc where client.id=doc.id)
все нормально, хожу по курсору, смотрю.
Хочу удалить запись...
все, удаление в курсоре не работает — необходимо сделать это оператором delete (с чем я вполне согласен)
и прорефрешить курсор.
^^^^^^^^^^^^^^^^^^^^^ вот это мне и не нравится.