Mehmet Ethem SULAN :: JPA(Java Persistence API), Hibernate JSF JSP JavaScript Ajax jQuery CSS ORM(Object Relation Mapping) :: Hibernate Ajax JSP(JavaServer Pages)

Bu uygulamada JSP ile Hibernate ve Ajax kullanmaya çalıştım. ORM dedikleri teknik işte bu hibernate frameworkunun sağladığı avantajlardır.
JSP ile Persist ORM/DAO örneğinde kısaca orm ve dao açıklanmış. Hibernate benzer bir kütüphane olan persist kullanmış.
Netbeans kurulumu tıklayarak resimdeki gibi 4 tane frameworklerden(bu framework sayıları siz de farklı olabilir) hibernateyi seçin. Hibernateyi seçince Database Connectiondan New Database Connectionu seçerek hangi veritabanıyla çalışmak istediğinizi seçin.Uygulamada ben mysql seçtim. Aşağıdaki Driver Name kısmından mysql seçtikten sonra mysql bağlanma bilgileri var. Eğer hibernate siz de yüklü değilse Tool–>Plugins–>Available Plugins–>Hibernate seçip yükleyin.

mysql connector

Driveri ekledikten sonra finish tıklayınca uygulamanızın source packages altında default packagenin altında hibernate.cfg.xml(Hibernate Configuration Wizard) dosyası otomatik eklenecek.

hibernate

Uygulamanızda bir paket oluşturun(örnekteki ethemsulan.com paketi) ve sağ tıklayarak new–>other–>hibernate Hibernate Reverse Engineering Wizardı seçerek yukarda bağlantı sağladığınız database tablolarından çalışmak istediğiniz tabloyu uygulamanıza aşağıdaki resimde görüldüğü gibi sağ tarafa add ile alarak uygulamanıza ekleyin.

hibernate.reveng.xml(ibernate Reverse Engineering Wizard) dosyasının bulunduğu paketi tıklayark Hibernate Mapping Files and POJOs from Database seçerek uygulamanıza eklediğiniz tabloya ait bir Kitap.hbm.xml dosyası ve Kitap.java sınıfını otomatik oluşturuyor.Yani tablonuza ait sınıf kodunu kendisi oluşturuyor.
Son olarak HibernateUtil.java tıklayarak oluşturun.Bu HibernateUtil veritabanına bir connection objesi yaratıyor.

hibernate ajax

KIsaca özetlersek
1.Web uygulada hibernate seçip bir database connector oluşturduktan sonra finish deyince Hibernate Configuration Wizard xml dosyasını oluşturuyor.
2.Bir paket oluşturup Hibernate Reverse Engineering Wizard seçerek hangi tablolarla çalışacaksak uygulamaya dahil ediyoruz(seçip add ile sağ tarafa alıyoruz)
3.Hibernate Mapping Files and POJOs from Database(ikinci adımda oluşturulan paketi sağ tıklayark bunu oluşturun) seçerek Ikinci adımda eklenen tabloları bir sınıfla eşleştirip ve bu sınıfın java kodunu üretiyoruz.
4.HibernateUtil.java seçin.Database ile ilgili işlemleri yapmamızı sağlar.

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
<!-- Ajax için jquery-1.4.2.min.js dosyasını ekledik.$.get("Islemler.jsp", $('#form1').serialize() ile formdaki
nesneleri Islemler.jsp sayfasından erişip veritabanına kaydettik.
$('#butId').click() verilen id ye sahip button tıklanınca gerçekleştirilecel işlemler () içine yazdık.
$ anlamı jQquery demektir.-->
        <script type="text/javascript" language="javascript" src="jquery-1.4.2.min.js"></script>
        <script type="text/javascript" language="javascript">
            $(function(){
                $('#butId').click(function(){
                    $.get("Islemler.jsp", $('#form1').serialize(), function(sonuc){
                        $('#divId').html(sonuc);
                        alert("Kayit Basariyla gerçekleşti");
                    })
                });
            });

        </script>
    </head>
    <body>
        <form id="form1">
            <table>
                <tr>
                    <td>ISBN</td>
                    <td><input type="text" name="isbn" value="" /></td>
                </tr>
                <tr>
                    <td>Ad</td>
                    <td><input name="ad" type="text" value="" /></td>
                </tr>
                <tr>
                    <td>Yazar</td>
                    <td><input name="yazar" type="text" value=""></td>
                </tr>
                <tr>
                    <td>Kategori</td>
                    <td><input id="kategori" name="kategori" type="text" value=""></td>
                </tr>
            </table>
        </form>
        <div id="divId"></div>
        <p><button id="butId">Ajax Kullanarak Kaydet</button></p>
    </body>
</html>

Islemler.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="ethemsulan.com.HibernateUtil, org.hibernate.Session" %>
<%@page import="org.hibernate.Transaction, ethemsulan.com.Kitap" %>
<%!
    Kitap kitapObj;
    String isbn, ad, yazar, kategori;
%>
<%--index.jsp içindeki  $('#form1').serialize() kodu ile formdaki alanalra isimleriyle bu sayfadan erişiyoruz.
alanlardaki name="alan ismi" yani name mutlaka olmalıdır serialize() için.
Aşağıda HibernateUtil ile session oluşturduk ve bir transaction başlattık save ile objemizi veritabanına kayit ettik.
--%>
<%
    isbn=request.getParameter("isbn");
    ad=request.getParameter("ad");
    yazar=request.getParameter("yazar");
    kategori=request.getParameter("kategori");
    kitapObj=new Kitap(isbn, ad, yazar, kategori);
    Session newSession=HibernateUtil.getSessionFactory().openSession();
    Transaction txT=newSession.beginTransaction();
    newSession.save(kitapObj);
    out.println("Kayit basariyla gerçekleşti");
    txT.commit();
    newSession.close();

%>

hibernate.cfg.xml(Hibernate Configuration Wizard) dosyamızda veritabanıyla(mysql) ilgili erişim ve kaynak bilgileri var

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


hibernate.reveng.xml
(Hibernate Reverse Engineering Wizard) dosyamızda hangi databasenin hangi tabloların olduğunu gösterilmiş.

<hibernate-reverse-engineering>
  <schema-selection match-catalog="ethemsulan"/>
  <table-filter match-name="kitap"/>
</hibernate-reverse-engineering>

kitap.hbm.xml(Hibernate Mapping Files and POJOs from Database ) sınıfın element ve attributlerini xml şeklinde oluşturmuş

<hibernate-mapping>
  <class catalog="ethemsulan" name="ethemsulan.com.Kitap" table="kitap">
    <id name="isbn" type="string">
      <column name="isbn"/>
      <generator class="assigned"/>
    </id>
    <property name="ad" type="string">
      <column name="ad"/>
    </property>
    <property name="yazar" type="string">
      <column name="yazar"/>
    </property>
    <property name="kategori" type="string">
      <column name="kategori"/>
    </property>
  </class>
</hibernate-mapping>


Kitap.java
otomatik oluşturulan java sınıfı

package ethemsulan.com;
public class Kitap  implements java.io.Serializable {
     private String isbn;
     private String ad;
     private String yazar;
     private String kategori;

    public Kitap() {
    }
    public Kitap(String isbn) {
        this.isbn = isbn;
    }
    public Kitap(String isbn, String ad, String yazar, String kategori) {
       this.isbn = isbn;
       this.ad = ad;
       this.yazar = yazar;
       this.kategori = kategori;
    }

    public String getIsbn() {
        return this.isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }
    public String getAd() {
        return this.ad;
    }

    public void setAd(String ad) {
        this.ad = ad;
    }
    public String getYazar() {
        return this.yazar;
    }

    public void setYazar(String yazar) {
        this.yazar = yazar;
    }
    public String getKategori() {
        return this.kategori;
    }

    public void setKategori(String kategori) {
        this.kategori = kategori;
    }
}

Comments

There are 7 comments for this post.

  1. Tayfur Yilmaz on Ekim 5, 2010 7:06 pm

    Ethem bey Java Orm ile ilgili makalleriniz devamını bekliyoruz. Netbeans ide 6.9 sanırım primefaces frameworkune geçmiş onunla ilgili de bi makale yazarsanız cok iyi olur bence..

  2. ethemsulan on Ekim 5, 2010 7:25 pm

    Tayfur iyi olur ama zaman yok. QT nasıl gidiyor. Biraz yaz da öğreneyim ben de.Takip ederim seni.

  3. Mehmet Ethem SULAN :: Hibernate JSF(JavaServer Faces) :: JSF(JavaServer Faces) Hibernate Framework Example on Kasım 6, 2010 2:56 pm

    […] frameworklerini ekleyin. Eğer daha önce Hibernate için Database Connection oluşturmamışsanız Hibernate Ajax JSP örneğine […]

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

    […] 2.1 seçiyoruz. Sonra Hibernate frameworkunu seçip bir tane database seçiniz. Hibernate örneğine bakabilirsiniz. JSF ve JSP ile ilgili detaylı bilgi için tıklayınız. Projenizi […]

  5. Mehmet Ethem SULAN :: JSP'de JavaScript Ajax jQuery CSS :: Java Crontab XML file Parser JSP Ajax Example on Aralık 28, 2010 9:44 pm

    […] bir mesela) ve sonuclari crontab.xml dosyasına kaydettim. Java ile bu xml dosyasını parse ettim. JSP AJax ile ekranda gösterdim. Hostlara ait mac, ip adresleri, işletim sistemi ve closed olmayan […]

  6. Mehmet Ethem SULAN :: Hibernate JSP'de JavaScript Ajax jQuery CSS ORM(Object Relation Mapping) :: JPA and Hibernate with JSP Ajax Example on Ocak 29, 2011 6:40 pm

    […] JSP Ajax ile veritabanında kayit ekleme, silme, listeleme işlemlerini yapmaya çalıştım. Bu örnekte sadece hibernate kullandım. JPA, Hibernate, ECB için güzel makaleyi okumanızı tavsiye ederim. […]

  7. Şeref AKYÜZ on Temmuz 5, 2011 12:36 pm

    Selamlar. Stajda bir proje yapmak üzere görevlendirildim. Javascript ve ajax konularına hakim değilim ama struts2 altyapısı kullanarak veritabanından sayfa yenilenmeden bilgi ekleme ve çekme işlemini yapmam gerekiyor. Ben projemde toplink implementasyonunu kullandım. Siz hibernate ile yapmışsınız. Bu yaptıklarınız toplink için de geçerli olur mu?

Write a Comment

Let me know what you think?