Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带MySQL数据库的Vaadin应用程序_Java_Mysql_Spring_Vaadin - Fatal编程技术网

Java 带MySQL数据库的Vaadin应用程序

Java 带MySQL数据库的Vaadin应用程序,java,mysql,spring,vaadin,Java,Mysql,Spring,Vaadin,我目前正在创建一个Vaadin应用程序,该应用程序应该从服务器上的mysql数据库获取其内容数据(例如,使用Xampp运行的服务器)。问题是我对大多数信息来源给我的方向感到困惑。每一个教程都有spring和spring引导代码,并且没有关于在vaadin中创建与数据库的连接的实际参考。我读了很多关于这件事的书,但仍然提到了一些带有vaadin UI元素的SpringBackend。这是否意味着Vaadin应用程序使用spring组件与数据库连接,并使用Vaadin UI表单等更新、显示、编辑数据

我目前正在创建一个Vaadin应用程序,该应用程序应该从服务器上的mysql数据库获取其内容数据(例如,使用Xampp运行的服务器)。问题是我对大多数信息来源给我的方向感到困惑。每一个教程都有spring和spring引导代码,并且没有关于在vaadin中创建与数据库的连接的实际参考。我读了很多关于这件事的书,但仍然提到了一些带有vaadin UI元素的SpringBackend。这是否意味着Vaadin应用程序使用spring组件与数据库连接,并使用Vaadin UI表单等更新、显示、编辑数据?我现在真的很困惑。那么,如果后端仍然在spring中创建,那么在Vaadin中创建应用程序与在spring/spring引导中创建应用程序之间有什么区别呢

Vaadin不决定如何访问数据。如果您使用的是SpringBoot,那么根据创建数据源将是一个很好的起点

现在您可以创建实体和存储库了。然后,可以在Vaadin应用程序中编辑和显示实体。有些人建议创建单独的类,以便在编辑和查看时进行编辑


例如,您拥有的每个Vaadin页面都可以注入存储库,它使用存储库加载实体,然后呈现给用户。

正如Mika所说,Vaadin并不决定您的CMS连接。我建议使用Vaadin和hibernate,因为您可以使用数据提供程序和hibernate标准来轻松筛选数据

编辑:代码示例(实际上只是一个示例) 我建议你读一读关于你和你自己的书

公共类EntityDataProvider扩展AbstractDataProvider实现DataProvider{
私有静态最终长serialVersionUID=7331161527158310247L;
私人会话工厂会话工厂;
公共实体数据提供程序(){
配置=新配置().configure();
sessionFactory=configuration.buildSessionFactory();
}
@凌驾
公共布尔值isInMemory(){
返回false;
}
@凌驾
公共整数大小(@Nullable Query){
Session Session=sessionFactory.openSession();
条件=session.createCriteria(Entity.class);
Filter=query.getFilter();
//将筛选器应用于条件
返回条件.list().size();
}
@凌驾
公共流获取(@Nullable Query){
Session Session=sessionFactory.openSession();
条件=session.createCriteria(Entity.class);
Filter=query.getFilter();
//将筛选器应用于条件
返回条件.list().stream();
}
}

但它与创建spring/springboot应用程序有何不同?CRUD的每个教程基本上都说要创建SpringBoot项目,而我的核心应用程序应该用vaadin编写。那么,这是否意味着无论我是用vaadin还是spring编写UI,到mysql数据库的连接都将使用spring-dependencis?您是用带vaadin的spring引导吗?例如,使用JPA和Spring注释创建实体和存储库。因此,在这些类中,Vaadin和其他类型的Spring应用程序之间没有区别。区别从存储库类自动连接到vaadinui类的地方开始。为了开始我的项目,我使用了vaadin教程官方网站。我的目标是使用相同的MySQL数据库在Vaadin中创建一个应用程序,然后在Spring boot中创建另一个完全相同的应用程序,并检查这些应用程序之间的性能和响应时间(例如,分别从Vaadin应用程序和Spring boot应用程序中的数据库加载1000个结果需要多少时间),但我觉得如果vaadin和spring boot应用程序都使用相同的方式连接并从数据库获取数据,并且我还没有发现vaadin是否有专门的方式来建立这种连接,那么基本上不会有什么区别。vaadin和spring boot在这方面是不可比的,vaadin也没有任何专门的数据库连接。您可以使用spring引导运行Vaadin,作为servlet应用程序(war)或在JEE环境中运行。数据库连接可以通过SpringBoot、通过JPAAPI的JEE服务器特定设置或使用一些其他库(如commons dbcp)来完成。Vaadin将在UI级别提供有趣的性能和扩展行为,以便与其他UI实现方案(如JavaScript解决方案(React、Angular.js等)或JSF)进行比较。
    public class EntityDataProvider extends AbstractDataProvider<Entity, Filter> implements DataProvider<CarePiDevice, String> {
    private static final long serialVersionUID = 7331161527158310247L;

    private SessionFactory sessionFactory;

    public EntityDataProvider() {
        Configuration configuration = new Configuration().configure();
        sessionFactory = configuration.buildSessionFactory();
    }

    @Override
    public boolean isInMemory() {
        return false;
    }


    @Override
    public int size(@Nullable Query<Entity, Filter> query) {
        Session session = sessionFactory.openSession();
        Criteria criteria = session.createCriteria(Entity.class);
        Filter filter = query.getFilter();
        // apply filters to Criteria
        return criteria.list().size();
    }



    @Override
    public Stream<CarePiDevice> fetch(@Nullable Query<Entity, Filter> query)  {
        Session session = sessionFactory.openSession();
        Criteria criteria = session.createCriteria(Entity.class);
        Filter filter = query.getFilter();
        // apply filters to Criteria
        return criteria.list().stream();
    }
}