Mehmet Ethem SULAN :: JPA(Java Persistence API), Hibernate JSF(Java Server Faces) :: JSF(Java Server Faces) Hibernate Framework Example

JavaServer Faces(JSF) MVC(Model View Controller) patterni üzerine kurulmuştur. Model: Bu sınıflar işlenen verileri içerir. View: Model sınıfının içerdiği verileri gösterir. Controller: Model ve View arasındaki etkileşiminden sorumludur.
JSF’nin diğer bir özelliği işlemlerin daha hızlı ve basit gerçekleşmesi için JSTL kullanmasıdır. Bu da biraz sınırlama getirdğinden pek tercih etmiyorum. Bana JSP daha kolay ve eğlenceli geliyor. JSF 2.0 ile gelen PrimeFaces bileşen takımı JSF dünyasında bir devrim yarattı diyebiliriz.
Burada fazla detaya girmeden Java web, istemci taraflı applet, sunucu tabanlı teknolojiler ise Servlet, daha sonra html web sayfaları içine eklemesiyle JSP ve JSF şeklinde teknolojileri sıralayabiliriz. Ayrıca Java Web Frameworkleri var. Eğer Netbeans ile web projesini oluşturmayı bilmiyorsanız Merhaba JSP örneğine bakabilirisniz.
Jsf Hibernate
Yukardaki resimde görüldüğü gibi uygulamanıza JavaServer Faces ve Hibernate frameworklerini ekleyin. Eğer daha önce Hibernate için Database Connection oluşturmamışsanız Hibernate Ajax JSP örneğine bakabilirisniz.

Proje oluşturduktan sonra welcomeJSF.jsp ve hibernate.cfg.xml dosyaları oluşur. Diğer hibernate dosyaların oluşturmak için resimdeki sırayı takip edebilrisiniz.
hibernate query and jsf
Kontrol.java

package ethem;

import ethemsulan.Kisi;
import ethemsulan.NewHibernateUtil;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;

public class Kontrol {

    private ArrayList<Kisi> listemiz;

    public ArrayList<Kisi> getListemiz() {
        return listemiz;
    }

    public void setListemiz(ArrayList<Kisi> listemiz) {
        this.listemiz = listemiz;
    }
    private Session session;

    public ArrayList<Kisi> getAllRecord() {
        listemiz = new ArrayList<Kisi>();
        session = NewHibernateUtil.getSessionFactory().openSession();
        String sql = "select {k.*} from kisi k";
        SQLQuery query = session.createSQLQuery(sql);
        query.addEntity("k", Kisi.class);
        List list = query.list();
        Iterator ite = list.iterator();
        while (ite.hasNext()) {
            Kisi ws = (Kisi) ite.next();
            getListemiz().add(ws);
        }
        session.close();
        return getListemiz();
    }
}

Hibernate ile ilgili işlemlerden Kontrol.java sınıfını yazdım ve faces-config.xml içine tanımladım. Kontrol.java sınıfı ismi ve hangi paket altında olduğunu belirttim.
faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

<managed-bean>
    <managed-bean-name>Kontrol</managed-bean-name>
    <managed-bean-class>ethem.Kontrol</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

</faces-config>

2. welcomeJSF.jsp zaten proje oluşturuken yaratılıyor. Çalıştırıldığında sayfada MySql veritabanında kisi ismindeki tablodaki(id,ad,soyad sutunları var sadece) bilgileri JSF data table içinde listeledim.
welcomeJSF.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- JSTL taglibler. --%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<%--
    This file is an entry point for JavaServer Faces application.
--%>
<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>JSP Page</title>
        </head>
        <body>
            <h:dataTable id="id" value="#{Kontrol.allRecord}" var="item">
                <h:column>
                    <h:outputText value="#{item.id}">Id:</h:outputText><br>
                </h:column>
                <h:column>
                    <h:outputText value="#{item.ad}">Ad:</h:outputText><br>
                </h:column>
                <h:column>
                    <h:outputText value="#{item.soyad}">Soyad:</h:outputText><br>
                </h:column>
            </h:dataTable>
        </body>
    </html>
</f:view>

Note: value=”#{Kontrol.allRecord}” var=”item” kayıtlara erişiyoruz. value=”#{item.ad}” ile veritabanından çekilen ad recorduna erişiyoruz. Daha iyi anlamak için JSTL ile MySql örneğine bakabilirsiniz.
Cikti aşağıdaki gibidir.
çıktı jsf
Diğer dosyaların da sadece kodlarını ekliyorum.

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sozluk</prope<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/welcomeJSF.jsp</welcome-file>
    </welcome-file-list>
</web-app>rty>
    <property name="hibernate.connection.username">root</property>
    <mapping resource="ethemsulan/Kisi.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

hibernate.reveng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd">
<hibernate-reverse-engineering>
  <schema-selection match-catalog="sozluk"/>
  <table-filter match-name="kisi"/>
</hibernate-reverse-engineering>

Kisi.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Nov 6, 2010 3:17:52 AM by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class catalog="sozluk" name="ethemsulan.Kisi" table="kisi">
    <id name="id" type="java.lang.Integer">
      <column name="id"/>
      <generator class="identity"/>
    </id>
    <property name="ad" type="string">
      <column name="ad"/>
    </property>
    <property name="soyad" type="string">
      <column name="soyad"/>
    </property>
  </class>
</hibernate-mapping>

Kisi.java

package ethemsulan;
// Generated Nov 6, 2010 3:17:52 AM by Hibernate Tools 3.2.1.GA

/**
 * Kisi generated by hbm2java
 */
public class Kisi  implements java.io.Serializable {
    
     private Integer id;
     private String ad;
     private String soyad;

    public Kisi() {
    }

    public Kisi(String ad, String soyad) {
       this.ad = ad;
       this.soyad = soyad;
    }
   
    public Integer getId() {
        return this.id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    public String getAd() {
        return this.ad;
    }
    
    public void setAd(String ad) {
        this.ad = ad;
    }
    public String getSoyad() {
        return this.soyad;
    }
    
    public void setSoyad(String soyad) {
        this.soyad = soyad;
    }
}

NewHibernateUtil.java

package ethemsulan;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;

public class NewHibernateUtil {
    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml) 
            // config file.
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception. 
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/welcomeJSF.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Comments

There are 5 comments for this post.

  1. Hakan Müştak on Kasım 15, 2010 11:05 pm

    Eline sağlık ethem

  2. Mehmet Ethem SULAN :: Hibernate JSF(Java Server Faces) :: PrimeFaces Hibernate NetBeans on Aralık 10, 2010 3:27 am

    […] örnekte PrimeFaces Hibernate ile nasıl kullanılabileceğini basitçe göstermeye çalıştım. JSF Hibernate örneğine bakabilirsiniz. PrimeFaces NetBeans 7.0 ile beraber default olarak geliyor. Örnekte ad […]

  3. Mehmet Ethem SULAN :: JSF(Java Server Faces) JSP'de JavaScript Ajax jQuery CSS Test Güdümlü Yazılım(Test Driven Development) :: JSF 2.0 Managed Bean Ajax on Şubat 20, 2011 7:57 pm

    […] ve ajax ile çağrılan sayfada KulBean’den kayedilen değer alınıp ekrana yazılır. JSF Hibernate örneğine bakmak için tıklayın. JSF’de Managed Bean, sayfalar arasında veri […]

  4. adsız on Ağustos 24, 2011 8:03 am

    Merhaba.Ben uygulamanızı yapmaya çalıştım ancak 404 hatası alıyorum.Bu konuda da yeniyim.Neyi eksik ya da yanlış yapmış olabilirim acaba?

  5. oguz on Mayıs 4, 2012 2:02 pm

    Merhabalar Jsf ve Jpa yada Hibernate kullanarak Login sayfasını nasıl yapabiliriz?

Write a Comment

Let me know what you think?