Hibernate 写入数据库(Vaadin流)
我将几个文本字段绑定到IDE Rapidclipse中使用Vaadin 14和JPA/Hibernate的实体。目的是将单击按钮时的输入数据写入定义为数据源的引用数据库。 我已经找到了这个文档 . 所以我对这一点的理解是:首先我需要创建实体的一个新bean(Hibernate 写入数据库(Vaadin流),hibernate,jpa,vaadin,rapidclipse,Hibernate,Jpa,Vaadin,Rapidclipse,我将几个文本字段绑定到IDE Rapidclipse中使用Vaadin 14和JPA/Hibernate的实体。目的是将单击按钮时的输入数据写入定义为数据源的引用数据库。 我已经找到了这个文档 . 所以我对这一点的理解是:首先我需要创建实体的一个新bean(Test Test=new Test())。然后所有输入数据都应该分配给bean的属性(binder.writeBean(test))。这就是文档中的内容。但是如何将数据插入数据库中实体的表中呢?我需要TestDAO类吗 在前Rapidcli
Test Test=new Test()
)。然后所有输入数据都应该分配给bean的属性(binder.writeBean(test)
)。这就是文档中的内容。但是如何将数据插入数据库中实体的表中呢?我需要TestDAO类吗
在前Rapidclipse版本中使用的Vaadin 7中,其工作原理如下:
fieldGroup.setItemDatasource(new Test());
...
fieldgroup.save()
Binder
用于将Bean的属性绑定到UI中显示的表单(例如文本字段)。所以当你做这样的事情的时候
Binder Binder=新的Binder(Person.class);
TextField titleField=新TextField();
//首先定义要使用的字段实例
活页夹福菲尔德(标题菲尔德)
//通过实际绑定完成
//个人类
.绑定(
//加载标题的回调函数
//从一个人的例子
Person::getTitle,
//保存标题的回调函数
//以个人为例
人(头衔);
您确切地说,titleField
显示一个人的头衔<代码>活页夹
与数据库持久性无关/不负责。
在您链接的文档中,在所有示例中都有一行与此类似:
MyBackend.updatePersonInDatabase(个人)代码>。开发人员有责任将对象持久化到底层数据库中。Flow是一个UI框架,这就是您可以自由选择数据库提供者/技术的原因
关于Vaadin 7,你在哪里找到了一个例子?我在字段组
类中找不到保存
的方法
也许有人扩展了它并添加了所需的功能
因此,例如,如果您正在使用hibernate,请遵循以下步骤:
session.save(emp)代码>将把对象插入数据库。
摘自这里:
其他一些有用的链接:
Binder
用于将Bean的属性绑定到UI中显示的表单(例如文本字段)。所以当你做这样的事情的时候
Binder Binder=新的Binder(Person.class);
TextField titleField=新TextField();
//首先定义要使用的字段实例
活页夹福菲尔德(标题菲尔德)
//通过实际绑定完成
//个人类
.绑定(
//加载标题的回调函数
//从一个人的例子
Person::getTitle,
//保存标题的回调函数
//以个人为例
人(头衔);
您确切地说,titleField
显示一个人的头衔<代码>活页夹
与数据库持久性无关/不负责。
在您链接的文档中,在所有示例中都有一行与此类似:
MyBackend.updatePersonInDatabase(个人)代码>。开发人员有责任将对象持久化到底层数据库中。Flow是一个UI框架,这就是您可以自由选择数据库提供者/技术的原因
关于Vaadin 7,你在哪里找到了一个例子?我在字段组
类中找不到保存
的方法
也许有人扩展了它并添加了所需的功能
因此,例如,如果您正在使用hibernate,请遵循以下步骤:
session.save(emp)代码>将把对象插入数据库。
摘自这里:
其他一些有用的链接:
因此,在这种意义上,瓦丁7和瓦丁14之间没有任何变化。您可以使用与以前相同的逻辑<代码>保存(实体)
方法仍然获取它需要持久化的对象。在您的情况下,它是关于DAO
写给binderan的。如何实现persistense取决于您<代码>DAO
增加了抽象级别。谢谢,成功了。这很明显。我不知道为什么我没有得到它。没问题!很好,它现在起作用了,我们都在努力缩小一些问题:)所以在这个意义上,瓦丁7和瓦丁14之间没有任何变化。您可以使用与以前相同的逻辑<代码>保存(实体)
方法仍然获取它需要持久化的对象。在您的情况下,它是关于DAO
写给binderan的。如何实现persistense取决于您<代码>DAO
增加了抽象级别。谢谢,成功了。这很明显。我不知道为什么我没有得到它。没问题!很好,它现在可以工作了,我们都在努力缩小一些问题:)
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);