Save changes to database vaadin

后端 未结 2 1407
夕颜
夕颜 2021-01-28 19:00

I have an application which has a table and when you click on an item in the table it fills in a group of textfields with its data (FieldGroup), and then you have the option of

相关标签:
2条回答
  • 2021-01-28 19:23

    I have figured out how to make changes to the database here is some code to demonstrate:

    try {
      /** define the session and begin it **/
      hbsession = HibernateUtil.getSessionFactory().getCurrentSession();
      hbsession.beginTransaction();
    
      /** table is the name of the Bean class linked to the corresponding SQL table **/
      String query = "UPDATE table SET name = " + textfield.getValue();
    
      /** Run the string as an SQL query **/
      Query q = hbsession.createQuery(query);
      q.executeUpdate(); /** This command saves changes or deletes a entry in table **/
    
      hbsession.getTransaction().commit();
    } catch (RuntimeException rex) {
        hbsession.getTransaction().rollback();
        throw rex;
    }
    
    0 讨论(0)
  • 2021-01-28 19:45

    Well, the first thing you need to realize is Vaadin differs from conventional request/response web framework. Actually, Vaadin is *event driven* framework very similar to Swing. It builds a application context from very first click of the user and holds it during whole website visit. The problem is there is no entry request point you can start hibernate session and no response point to close. There are tons of requests during a single click on button.

    So, entitymanager-per-request pattern is completely useless. It is better to use one standalone em or em-per-session pattern with hibernate.connection_release after_transaction to keep connection pool low.

    To the JPAContianer, it is not usable as far you need to refresh the container or you have to handle beans with relations. Also, I did not manage to get it working with batch load, so every reading of entry or relation equals one select to DB. Do not support lazy loading.

    All you need is open EM/session. Try to use suggested patters or open EM/session every transaction and merge your bean first.

    Your question is quite complex and hard to answer, but I hope these links help you get into:

    Pojo binding strategy for hibernate

    https://vaadin.com/forum#!/thread/39712

    MVP-lite

    https://vaadin.com/directory#addon/mvp-lite (stick with event driven pattern)

    0 讨论(0)
提交回复
热议问题