APACHE WICKET ILE HIBERNATE ve JQUERY ÖRNEĞİ

Merhaba Arkadaşlar,

Bugün Apache Wicket çatısını kullanarak web arayüzümüzden CRUD işlemlerimizi yapabileceğimiz küçük bir kütüphane programı yapacağız. Veritabanı işlemlerimizi Hibernate kullanarak yapacağız.. Ayrıca browser üzerindeki client-side işlemlerimizi JQuery e yükleyeceğiz.. Dilerseniz başlayalım.

IDE olarak ben Netbeans kullandım. Dolayısıyla veritabanı olarak Derby veritabanı bizim için yeterli olacaktır.

Öncelikle Netbeans de wicket projemizi oluşturalım. Bu proje bize com.myapp.wicket paketinin altında Application,BasePage,HomePage,HeaderPanel,FooterPanel dosyalarını oluşturacak. Şimdilik dosyalarımıza dokunmayalım. Derby veritabanına bağlanalım ve tablomuzu oluşturalım.

Kitaplar tablomuzda aşağıdaki alanlar olsun;

id int
ad varchar(50)
yazar varchar(50)
basimtarihi varchar(50) //String ifade kullandık.
basimev varchar(100)
aciklama varchar(200)

bu alanları veritabanımızda oluşturuyoruz. Şimdi ise hibernate yönetimimizi oluşturalım.

Projemizin üzerine gelip sağ tuş diyoruz akabinde en aşağı kısımdaki Other sekmesine basıp Hibernate klasörünü görüyoruz.




Bu arayüzden öncelikle sihirbazımızı kullanarak cfg.xml dosyasını oluşturalım.




Reverse engineering dosyamızı da oluşturalım. Buradan sihirbazı kullanarak veritabanında oluşturduğumuz tabloyu seçelim.



"Hibernate Mapping Files and POJOs from Database" sekmesini kullanarak Harita dosyamızı oluşturuyoruz.



hibernate.hbm.xml dosyası





package com.myapp.wicket;
// Generated 21.Tem.2011 14:50:13 by Hibernate Tools 3.2.1.GA
/**
* Kitaplar�taplar generated by hbm2java
*/
public class Kitaplar implements java.io.Serializable {


private int id;
private String ad;
private String yazar;
private String basimEv;
private String aciklama;
private String basimTarihi;

public Kitaplar() {
}


public Kitaplar(int id, String ad, String yazar, String basimEv, String aciklama) {
this.id = id;
this.ad = ad;
this.yazar = yazar;
this.basimEv = basimEv;
this.aciklama = aciklama;
}
public Kitaplar(int id, String ad, String yazar, String basimEv, String aciklama, String basimTarihi) {
this.id = id;
this.ad = ad;
this.yazar = yazar;
this.basimEv = basimEv;
this.aciklama = aciklama;
this.basimTarihi = basimTarihi;
}

public int getId() {
return this.id;
}

public void setId(int id) {
this.id = id;
}
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 getBasimEv() {
return this.basimEv;
}

public void setBasimEv(String basimEv) {
this.basimEv = basimEv;
}
public String getAciklama() {
return this.aciklama;
}

public void setAciklama(String aciklama) {
this.aciklama = aciklama;
}
public String getBasimTarihi() {
return this.basimTarihi;
}

public void setBasimTarihi(String basimTarihi) {
this.basimTarihi = basimTarihi;
}




}




Pojo muz ise yukardaki gibi Hibernate aracı tarafından oluşturuldu.

Meselenin hibernate kısmını bu şekilde çözmüş olduk. Şimdi ise Wicket arayüzünü düzenleyeceğimiz sayfaya gidelim. Projemizdeki HomePage.html ve HomePage.java dosyalarını düzenliyoruz.


HomePaga.java yı aşağıdaki gibi HomePage.html ise linkten alabilirisiniz. Link

/*
* HomePage.java
*
* Created on 17 Temmuz 2011 Pazar, 17:42
*/

package com.myapp.wicket;

import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.DataGridView;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.PropertyPopulator;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.markup.html.list.*;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import java.util.Iterator;
import org.apache.wicket.behavior.StringHeaderContributor;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.Model;
import org.hibernate.Transaction;
import java.io.*;


public class HomePage extends WebPage {

public HomePage() {

LoadableDetachableModel veriler = new LoadableDetachableModel(){
@Override
protected Object load(){
List resultList = null;
try {
Session session = BookUtil.getSessionFactory().openSession();
session.beginTransaction();
Query q = session.createQuery("select k from Kitaplar as k");
resultList = (List)q.list();
session.getTransaction().commit();
session.close();
} catch (HibernateException he) {
he.printStackTrace();
}

return resultList;

}
};

ListView liste = new ListView("liste",veriler){
@Override
protected void populateItem(ListItem listitem){
Kitaplar kitap =(Kitaplar)listitem.getModelObject();

listitem.add(new Label("id",kitap.getId()+""));
listitem.add(new Label("ad",kitap.getAd()));
listitem.add(new Label("yazar",kitap.getYazar()));
listitem.add(new Label("basimtarihi",kitap.getBasimTarihi().toString()));
listitem.add(new Label("basimev",kitap.getBasimEv()));
listitem.add(new Label("aciklama",kitap.getAciklama()));
}


};


add(liste);


Form form = new Form("form");

final TextField id = new TextField("id", new Model());

form.add(id);

final TextField ad = new TextField("ad", new Model());

form.add(ad);


final TextField yazar = new TextField("yazar", new Model());

form.add(yazar);

final TextField basimtarihi = new TextField("basimtarihi", new Model());

form.add(basimtarihi);

final TextField basimev = new TextField("basimev", new Model());

form.add(basimev);

final TextField aciklama = new TextField("aciklama", new Model());

form.add(aciklama);




Button submit = new Button("kaydet") {

public void onSubmit() {
Session session = BookUtil.getSessionFactory().openSession();
session.beginTransaction();
Kitaplar kitap = new Kitaplar();
kitap.setAd(ad.getInput());
kitap.setYazar(yazar.getInput());
String tarih=basimtarihi.getInput();
kitap.setBasimTarihi(tarih);
kitap.setBasimEv(basimev.getInput());
kitap.setAciklama(aciklama.getInput());
session.save(kitap);
session.getTransaction().commit();
session.close();
}


};

Button sil = new Button("sil") {

public void onSubmit() {

Session session = BookUtil.getSessionFactory().openSession();
String key=id.getInput();
String hql = "delete from Kitaplar kitaplar where id ="+key;
Query query = session.createQuery(hql);
query.executeUpdate();
session.close();


}
};


Button degistir = new Button("degistir") {

public void onSubmit() {
Session session = BookUtil.getSessionFactory().openSession();
Transaction tr=session.beginTransaction();
int key=Integer.parseInt(id.getInput());
Kitaplar kitap=(Kitaplar)session.get(Kitaplar.class, key);
kitap.setAd(ad.getInput());
kitap.setAciklama(aciklama.getInput());
kitap.setBasimEv(basimev.getInput());
kitap.setYazar(yazar.getInput());
kitap.setBasimTarihi(basimtarihi.getInput());
session.update(kitap);
tr.commit();
session.close();

System.out.println("Degistir..");

}
};

form.add(submit);
form.add(sil);
form.add(degistir);


//this.add(new StringHeaderContributor(script));
this.add(form);


}
}




Yorumlar

Bu blogdaki popüler yayınlar

NODE.JS Örnek Uygulama - TIC TAC TOE -1 (Server)

ORA-00054: resource busy and acquire with NOWAIT specified

Cannot resolve the collation conflict between “Turkish_CI_AS” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation