Mehmet Ethem SULAN :: JPA(Java Persistence API), Hibernate JSF(Java Server Faces) PrimeFaces :: PrimeFaces Hibernate NetBeans

Bu ö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 ve soyad değerlerini hibernate kullanarak veritabanına kaydediyor.
Netbeans ile web projesi oluşturduktan sonra JavaServer Faces frameworkunu sçtikten sonra Components–>Components Suite–>PrimeFaces 2.1 seçiyoruz.
primefaces
Sonra Hibernate frameworkunu seçip bir tane database seçiniz. Hibernate örneğine bakabilirsiniz.
hibernate primefaces
JSF ve JSP ile ilgili detaylı bilgi için tıklayınız.
Projenizi sağ tıklayıp New–>Other–>JavaServer Faces–>JSF Faces Configuration ile faces-config.xml(JSF Managed Bean ayarları yapılır) dosyasını oluşturun. Sonra JSF Mnaged Bean oluşturun.
JSF Managed Bean
Aşağıdaki resimde JSF Managed Bean oluşturulurken IDE faces-config.xml dosyasında otomatik ayarlama kodunu yazıyor genelde.
facesconfig
Eğer kendisi oluşturmuyorsa aşağıdaki resimde görüldüğü gibi kendiniz de yazabilrisiniz.
managed bean
faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>

<!--Note: <managed-bean-name>uyeKaydet</managed-bean-name> Bean ismi kucuk harfle basliyor -->
<faces-config version="2.0"
    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_2_0.xsd">
   
   <managed-bean>
        <managed-bean-name>uyeKaydet</managed-bean-name>
        <managed-bean-class>ethem.UyeKaydet</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
</faces-config>

Burada .. kendinizde tanımlayabilirisniz.
Uygulama resmi
netbeans
Otomatik eklenilen PrimeFaces ve Hibernate jar dosyaları
jar
index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:p="http://primefaces.prime.com.tr/ui"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
      
       <h:form prependId="false">  
        <p:panel header="Uye Formu">  
            <h:panelGrid columns="2"> 
                
                <h:outputLabel value="Ad:*" for="ad_alani"></h:outputLabel>  
                <h:inputText id="ad_alani" value="#{uyeKaydet.yeniNesne.ad}" required="true"/>  

                <h:outputLabel value="Soyad:*" for="soyad_alani"></h:outputLabel>  
                <h:inputText id="soyad_alani" value="#{uyeKaydet.yeniNesne.soyad}" required="true"/>  

                <p:commandButton value="Add" actionListener="#{uyeKaydet.kaydet}"/>  
            </h:panelGrid>  
        </p:panel> 
           <h:panelGrid columns="2">
               <h:outputText value="#{uyeKaydet.yeniNesne.ad}"/>
               <h:outputText value="#{uyeKaydet.yeniNesne.soyad}"/>
           </h:panelGrid>
       </h:form>  
        
    </h:body>
</html>

PrimeFaces: xmlns:p=”http://primefaces.prime.com.tr/ui
Uye.java

package ethemsulan;
// Generated Dec 6, 2010 6:16:25 PM by Hibernate Tools 3.2.1.GA

public class Uye  implements java.io.Serializable {


     private Integer id;
     private String ad;
     private String soyad;

    public Uye() {
    }

    public Uye(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;
    }

}

UyeKaydet.java

package ethem;

import ethemsulan.Uye;

/**
 *
 * @author ubuntu
 */
public class UyeKaydet {
    
    private ImplementsMem impObject=new ImplementsMem();
    private Uye yeniNesne;

    public Uye getYeniNesne() {
        return yeniNesne;
    }

    public void setYeniNesne(Uye yeniNesne) {
        this.yeniNesne = yeniNesne;
    }
    public UyeKaydet() {
        yeniNesne=new Uye();
    }
//Hibernate ile kaydetmek için metod çağrılıyor.
    public void kaydet()
    {
        impObject.saveWithHibernate(yeniNesne);
    }

}

ImplementsMem.java

package ethem;

import ethemsulan.Uye;
import org.hibernate.Transaction;
import org.hibernate.Session;
import ethemsulan.HibernateUtil;

public class ImplementsMem {

    public void saveWithHibernate(Uye yeniNesne) {
    Session newSession=HibernateUtil.getSessionFactory().openSession();
    Transaction txT=newSession.beginTransaction();
    newSession.save(yeniNesne);
    System.out.println("Kayit basarili");
    txT.commit();
    newSession.close();
    }

}

Hibernate daha önce uygulamalarda açıklamaya çalışmıştım. Aşağıda bu örnekle ilgili kodlardır.
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="uye"/>
</hibernate-reverse-engineering>

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</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123</property>
    <mapping resource="ethemsulan/Uye.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

HibernateUtil.java

package ethemsulan;


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

/**
 * Hibernate Utility class with a convenient method to get Session Factory object.
 *
 * @author ubuntu
 */
public class HibernateUtil {
    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;
    }
}

Comments

There are 3 comments for this post.

  1. Mehmet Ethem SULAN :: JSF(Java Server Faces) PrimeFaces :: JSF PrimeFaces Datatable Pagination Example on Mart 5, 2011 10:31 pm

    […] ile PrimeFaces kullanrak client tarafında kayıtları sayfalamaya çalıştım. PrimeFaces Hibernate NetBeans örneğine bakabilirsiniz. Sayfalama aslında o kadar da kolay bir işlem değil. Ama PrimeFaces […]

  2. soner on Mart 19, 2012 11:39 am

    Örnek için Teşekkür ederim yanlız uye.hbm.xml dosyasını vermemişsiniz.

  3. Kadir on Eylül 8, 2012 8:55 am

    Aynı örnek üzerinden bir tabloyu sorgulayıp. Bunu datatable ile nasıl gösterebiliriz?

Write a Comment

Let me know what you think?