2012-01-19 2 views
0

Я пишу приложение, которое должно содержать некоторые метаданные о строках базового сервера MySQL (он обменивается данными с сервером MySQL через драйвер JDBC).Выяснение, какая строка была обновлена ​​/ удалена JDBC (ResultSet)

Фактически каждый клиент имеет уникальный идентификатор, и моему Java-приложению необходимо сохранить для каждой строки uuid последнего клиента, который изменил строку.

До сих пор, когда вставлена ​​строка, я выделяю ей слот в таблице метаданных, на который ссылается его первичный ключ.

Единственный способ, которым я могу это сделать, - это сделать выбор в таблице (с тем же условием, что и обновление/удаление), но это означает, что для данного запроса я фактически удваиваю работу. Имеет ли какие-нибудь лучшие идеи или знает способ JDBC сделать это?

Благодаря

ответ

2

Есть два подхода к обновлению данных в SQL из Java:

  1. Keep всю логику в Java, как вы делаете, это держит таблицы просто и вся ваша логика в коде
  2. Напишите хранимую процедуру в MySQL, чтобы выполнять обновления в других таблицах при изменении. Если вы следуете этому маршруту, то код Java прост, но логика в таблицах сложна в SQL.

Что вам не следует делать, это разделить разницу и иметь некоторую логику в Java и некоторые из SQL. Я рекомендую придерживаться вашего подхода, потому что гораздо сложнее изменить и отладить код хранимой процедуры в SQL, чем в Java.

PS Я сделал это в обоих направлениях, сохраняя логику на Java намного проще в обслуживании.

+0

Правильно, я все равно придерживаюсь логики на Java, но, скорее всего, не буду, для каждого «обновления *, где x =», также нужно сделать «select * where x», и было интересно, существует ли preexisintg jdbc, что сделало это более эффективным способом. – user1018513

+0

Я не думаю, что JDBC предоставляет такие функции, как тот, который вы хотите. Код JDBC - это всего лишь тонкая оболочка над SQL-соединением с несколькими утилитами, которые помогут вам отправлять запросы и получать строки и ошибки. –

Смежные вопросы