JSF + Hibernate

0

Witam

Nie mogłem nic sensownego znaleźć na temat połączenia jsf i hibernate.
Skleciłem więc ;-) prosty projekt i chciałbym zapytać o opinię.

Opis:

  • mapowanie relacyjne w hibernate.
  • klasy , odpowiedniki tabel są @ManagedBean, natomiast zarządzanie odbywa się przez klasę Kontroler, również @ManagedBean.

Pytanie czy to jest poprawne pisanie aplikacji i co najważniejsze, czy przy dużym projekcie wszystko działałoby poprawnie?

Czy może lepiej połączyć to jeszcze ze Spring, którego nota bene jeszcze nie znam?

Pozdrawiam

0

Odpowiednikiem Encji jest @Entity nie managed bean. Hibernate sam będzie trzymał relacje, spójność i tranzakcje

0

Witam

Czyli wyszłoby coś takiego:

package model;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ApplicationScoped;
import javax.persistence.Entity;
import javax.persistence.Id;

/**
 *
 * @author 
 */

//@ManagedBean
//@ApplicationScoped
@Entity
public class Test implements Serializable {

    @Id
    private int id;
    private String test;

    public Test() {
    }

    public Test(String test) {
        this.test = test;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTest() {
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }

    
}

package model;

/**
 *
 * @author
 */

import model.Test;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import utils.HibernateUtil;

@ManagedBean
@ApplicationScoped
public class TestControler {

    Test test=null;
    private String tescik;

    public TestControler() {
    }

    public void DodajTest(String tescik){

            HibernateUtil.getSessionFactory();
            Configuration cfg = new Configuration();
            cfg.configure();
            SessionFactory sessionFactory = cfg.buildSessionFactory();

            try{
                Session session = sessionFactory.openSession();
                Test t = new Test(tescik);
                Transaction tx = session.beginTransaction();
                session.save(t);
                tx.commit();
                
            }catch(Exception e){
                e.printStackTrace();
            }
    }

    public String getTescik() {
        return tescik;
    }

    public void setTescik(String tescik) {
        this.tescik = tescik;
    }

    
}
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        PostgreSql Test
        <h:form>
            <h:panelGrid>
                String Test:
                <h:inputText id="test" value="#{testControler.tescik}"/>
            </h:panelGrid>
            <h:commandButton value="Dodaj" action="#{testControler.DodajTest(testControler.tescik)}"/>
        </h:form>
    </h:body>
</html>

Czy takie odwołanie jest ok?

Pozdrawiam

0

Zadeklarowałeś beansa w faces-config.xml?

0

Witam

        <managed-bean>
        <managed-bean-name>test</managed-bean-name>
        <managed-bean-class>model.Test</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <h:body>
        PostgreSql Test
        <h:form>
            <h:panelGrid>
                String Test:
                <h:inputText id="test" value="#{test.test}"/>
            </h:panelGrid>
            <h:commandButton value="Dodaj" action="#{testControler.DodajTest(test.test)}"/>
        </h:form>
    </h:body>

Działa, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1