Запись в базу данных (Vaadin Flow) - PullRequest
0 голосов
/ 11 октября 2019

Я связал несколько текстовых полей с сущностью в IDE Rapidclipse, которая использует Vaadin 14 и JPA / Hibernate. Цель состоит в том, чтобы записать входные данные по нажатию кнопки в ссылающуюся базу данных, которая определена как источник данных. Я уже нашел эту документацию Запись вручную . Итак, мое понимание этого таково: сначала мне нужно создать новый компонент сущности (Test test = new Test()). Затем все входные данные должны быть присвоены атрибутам компонента (binder.writeBean(test)). Это так далеко, как документация идет. Но как данные вставляются в таблицу объекта в моей базе данных? Нужен ли мне класс TestDAO?

В Vaadin 7, который использовался в предыдущей версии Rapidclipse, он работал так:

fieldGroup.setItemDatasource(new Test());
...
fieldgroup.save()

1 Ответ

2 голосов
/ 11 октября 2019

Binder используется для привязки атрибутов Bean к форме (например, TextFields), отображаемой в пользовательском интерфейсе. Поэтому, когда вы делаете что-то вроде этого Как связать данные формы

Binder<Person> binder = new Binder<>(Person.class);

TextField titleField = new TextField();

// Start by defining the Field instance to use
binder.forField(titleField)
        // Finalize by doing the actual binding
        // to the Person class
        .bind(
                // Callback that loads the title
                // from a person instance
                Person::getTitle,
                // Callback that saves the title
                // in a person instance
                Person::setTitle);

, вы точно указываете, что titleField отображает название человека. Binder не является не связанным с / ответственным за постоянство БД. В документации, на которую вы ссылаетесь, во всех примерах есть строка, подобная этой: MyBackend.updatePersonInDatabase(person);. Разработчик несет ответственность за сохранение объекта в базовой базе данных. Flow - это структура пользовательского интерфейса, поэтому вы можете свободно выбирать поставщика / технологию базы данных.

Что касается Vaadin 7, где вы нашли пример? Я не могу найти метод save для FieldGroup класса FieldGroup API

Может быть, кто-то расширил его и добавил необходимую функциональность?

Итак, дляНапример, если вы используете hibernate что-то вроде этого:

session.save(emp); вставит ваш объект в БД. Взято отсюда: Учебное пособие по Hibernate Insert Query *

Некоторые другие полезные ссылки:

...