Использование привязки данных JFace с Hibernate: возможно ли это? - PullRequest
4 голосов
/ 21 октября 2010

Наш проект представляет собой приложение Eclipse RCP, использующее Hibernate в качестве ORM.Недавно я узнал о привязке данных JFace, в которой графический интерфейс и модели данных можно автоматически синхронизировать.

Я собрал короткую тестовую реализацию в духе превосходного учебника по связыванию данных JFace Ларса Фогеля *1004* ибыл очень впечатлен фреймворком.

Есть ли способ подключить это в Hibernate, чтобы изменения, сделанные в наблюдаемом виджете, автоматически сохранялись в базе данных?Это кажется естественным делом, и я не нашел хороших учебников.

Я подозреваю, что, возможно, я лаю не на том дереве или пропустил какое-то фундаментальное понятие.

Кто-нибудь пытался это сделать?Какая здесь «лучшая практика»?

1 Ответ

2 голосов
/ 30 октября 2010

Я не думаю, что вы должны сохранять свою модель данных в базе данных после каждой модификации в графическом интерфейсе. Несколько причин:

  • это может привести к очень плохой производительности (худший случай - это вызов обновления базы данных после каждого нажатия клавиши)
  • Может быть трудно реализовать некоторое поведение GUI (например, может ли ваш пользователь «отменить» операцию редактирования? Как «восстановить» исходные значения?)

Если ваша заявка содержит какое-то приложение / Сохранить / и т. Д. Кнопка и кнопка Отмена у вас есть несколько четко определенных точек, где вам нужно выполнить операции с базой данных:

  • используйте привязку данных для соединения вашей модели данных и графического интерфейса пользователя
  • обработчик кнопки «Применить» или «Сохранить» сохраняет отредактированный объект в базе данных
  • обработчик кнопки Отмена может при необходимости перезагрузить отредактированный объект из базы данных (без изменений)

Только мои два цента ...

Отказ от ответственности : Я использовал очень простые примеры выше, чтобы проиллюстрировать свои мысли. Например. Вы никогда не должны вызывать операции базы данных / Hibernate напрямую из GUI (используйте «средний уровень» между GUI и базой данных для обеспечения модульности и тестируемости).

...